VB net requete d insertion

Résolu
intimed Messages postés 4 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 30 mai 2017 - 13 avril 2012 à 14:32
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 14 avril 2012 à 13:53
Bonjour Tout le monde,

Pourriez-vous SVP m’aider pour résoudre un petit problème d’insertion des données dans une base accses en utilisant OleDb comme connexion.
En effet, j’ai deux bases Access contenant pour chacune table s’appelle « Client » (les deux tables client ont la même structure) et je voudrais insérer les données de la table client de la base1 dans la table client de la base2. (Voir code VB net ci-dessous).
Le problème est que mon programme s’arrête sur la ligne 14 ( MonCommand2.ExecuteNonQuery() ) et m’affiche le message suivant :
« Le nombre de valeurs de la requête doit coïncider avec le nombre de champs de destination. »

Private MyConnexion1 As New OleDb.OleDbConnection
Private MonCommand1 As New OleDb.OleDbCommand
Private MyConnexion2 As New OleDb.OleDbConnection
Private MonCommand2 As New OleDb.OleDbCommand



MyConnexion1.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source= " & CheminBase1 & ";"
MyConnexion1.Open()

MonCommand1 = MyConnexion1.CreateCommand()

MonCommand1.CommandText = "SELECT * From Client1 Order by CodeClient"
MonCommand1.ExecuteNonQuery()


MyConnexion2.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source= " & CheminBase2 & ";"
MyConnexion2.Open()

MonCommand2 = MyConnexion2.CreateCommand()

MonCommand2.CommandText = "insert into Client values('" & MonCommand1.CommandText.ToString & "')"
MonCommand2.ExecuteNonQuery()

MyConnexion2.Close()
MyConnexion1.Close()

4 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
13 avril 2012 à 19:49
Bonjour,

As-tu un exemple de requête générée ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
bouajilamyriam Messages postés 2 Date d'inscription jeudi 28 avril 2011 Statut Membre Dernière intervention 14 avril 2012
14 avril 2012 à 00:46
bonsoir,

intimed tu doit vérifier la liste des colonnes de la table.
c'est à dire
insert into Client(liste des colonnes) values(listes des valeur)
3
intimed Messages postés 4 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 30 mai 2017
14 avril 2012 à 11:23
Bonjour,

Merci beaucoup pour vos conseilles et vos reponses.

j ai regle le probleme de l insertion des donnees mais j ai tombe sur un autre probleme de dedoublonnage de la cle primaire.
en effet, le premier champ "CodeClient" de la table est une cle primaire avec numero auto.
Comment je peux inserer les donnees sans mettre dans la requete les noms des champs?

merci de voir ci-dessous le nouveau code:

Private MyConnexion1 As New OleDb.OleDbConnection
Private MonCommand1 As New OleDb.OleDbCommand

MyConnexion1.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source= " & CheminBase1 & ";"
MyConnexion1.Open()

MonCommand1 = MyConnexion1.CreateCommand()

MonCommand1.CommandText = "INSERT INTO Client IN '" & CheminBase2 & "' SELECT * From Client Order by CodeClient"
MonCommand1.ExecuteNonQuery()


MyConnexion1.Close()



Cordialement.
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 avril 2012 à 13:53
Bonjour,

Listes les champs (regardes la syntaxe de INSERT INTO) au lieu de tous les mettre.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Rejoignez-nous