[VBA] pb avec INSERT INTO

fredo91170 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
 biskott -
Bonjour,

Voilà comme vous pourrez le constater j'ai un petit pb pour envoyer mes données de mon Recordset dans une table "FINAL" dont les champs sont déja créer mais ne portent pas les mêmes noms que ma table d'où proviennent mes données.
Mon soucis se pose au niveau de la syntaxe INSERT INTO je crois bien.
Si une âme charitable pourrais faire quelque chose !!

MERCI

Option Compare Database
'Public SQL As String
'Public dB As Database
'Public Rs As Recordset
Sub copy()
Dim System As String

Set dB = CurrentDb
Set Rs = Nothing

SQL = "SELECT [Opé],[Date opé],Lp,Titre,Raison,Qte,Mt,Prime,Plan FROM [Sales Orders It Macro]"
Set Rs = dB.OpenRecordset(SQL)

If Rs.RecordCount > 0 Then

Rs.MoveFirst

Do Until Rs.EOF

System = Rs!LP & "." & Left(Rs!Titre, 4) & "." & Right(Rs!Titre, 3)

Rs.MoveNext

dB.Execute "INSERT INTO FINAL (OPE,[DATE OPE],LP,[CODE PRODUIT],RAISON,[QTY ORDERED],[UNIT PRICE TTC],PRIME,PLAN) values"

Loop
End If


End Sub

4 réponses

biskott
 
monSQL = "Insert Into T_maTable(MonChamp1, monChamp2) Values ('Valeur1',Valeur2')"

Il faut que tu aies le même nombre de valeur que de champ. Comme tu le vois, tes champs sont délimité par un quote et une virgule : il faut donc que tes valeurs ne contiennent pas de quote (') - on y remédie en doublant le quote pour que l'instruction SQL ne l'interprete pas comme un quote de fin de champ.

Dans ton cas, il y a surement une erreur soit dans l'écriture (9 champs alors qu'il n'y en a que 8) soit dans les données (il y a un null et tu n'as pas mis de quote).
1
Peut-êtreUneRéponse Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   11
 
Rajoute le nom des champs d'où proviennent tes données après le terme values:

dB.Execute "INSERT INTO FINAL (OPE,[DATE OPE],LP,[CODE PRODUIT],RAISON,[QTY ORDERED],[UNIT PRICE TTC],PRIME,PLAN) values <ici>"

Dans le même ordre que les champs de la table FINAL énumérés après le INSERT TO FINAL.
0
fredo91170 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Desole mais je viens de faire ce que tu ma dis:

dB.Execute "INSERT INTO FINAL (OPE,[DATE OPE],LP,[CODE PRODUIT],RAISON,[QTY ORDERED],[UNIT PRICE TTC],PRIME,PLAN) values ([Opé],[Date opé],Lp,Titre,Raison,Qte,Mt,Prime,Plan)"

mais il bug toujours en me disant:
"too few parameters. Expected 9"

tu sais pourquoi?
0
Peut-êtreUneRéponse Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   11
 
Ta table FINAL contient-elle d'autres colonnes que celles que tu alimentes?

Si oui tu dois aussi les renseigner... avec des valeurs par défaut par exemple.
0
fredo91170 Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
c'est le cas mais dans ma table d'origine j'ai 13 champs et dans celle de destination j'en ai 35
Alors comment le gerer
0
Peut-êtreUneRéponse Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   11
 
Il faut que tu renseignes une valeur par défaut pour les colonnes supplémentaires de la table FINAL (35 - 9 = 26 valeurs par défaut)

Ou alors tu modifies le DDL de ta table et tu fais en sorte que les colonnes soit NULL WITH DEFAULT
0