Rechercher : dans
Par :

[VBA] pb avec INSERT INTO

Dernière réponse le 22 fév 2008 à 20:27:06 fredo91170, le 11 oct 2006 à 15:53:22 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [VBA] pb avec INSERT INTO » dans :
[VBA:VB6] Se servir d'excel à partir d'une autre application VoirCette petite routine permet d'appeler excel à partir de VB6 ou d'une autre application Office. A coller dans un module général (Module1 par exemple) En VBA >> Insertion >> Module, et dans cette fenêtre coller... En VB6 >> Projet >> Ajouter un...
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...

1

Peut-êtreUneRéponse, le 11 oct 2006 à 15:59:20

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.

Répondre à Peut-êtreUneRéponse

2

fredo91170, le 11 oct 2006 à 16:12:15

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?

Répondre à fredo91170

3

Peut-êtreUneRéponse, le 11 oct 2006 à 16:23:04

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.

Répondre à Peut-êtreUneRéponse

4

fredo91170, le 11 oct 2006 à 16:55:29

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

Répondre à fredo91170

5

Peut-êtreUneRéponse, le 11 oct 2006 à 17:03:54

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

Répondre à Peut-êtreUneRéponse

6

 biskott, le 22 fév 2008 à 20:27:06
  • +1

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).

Répondre à biskott