VB net requete d insertion [Résolu]

Messages postés
4
Date d'inscription
jeudi 7 juillet 2011
Dernière intervention
30 mai 2017
- - Dernière réponse : NHenry
Messages postés
14397
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
23 mars 2019
- 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()
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
14397
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
23 mars 2019
154
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
2
Date d'inscription
jeudi 28 avril 2011
Dernière intervention
14 avril 2012
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bouajilamyriam
Messages postés
4
Date d'inscription
jeudi 7 juillet 2011
Dernière intervention
30 mai 2017
0
Merci
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.
Commenter la réponse de intimed
Messages postés
14397
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
23 mars 2019
154
0
Merci
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
Commenter la réponse de NHenry

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.