OVH Cloud OVH Cloud

INSERT INTO ..

7 réponses
Avatar
Benoit F.
Bonjour,
j'essai d'utiliser la commande INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...]) pour inserer un nouvel enregistrement dans
une table.
j'utilise le code suivant dans une procédure :
InsString1 = "INSERT INTO MaTable (field1, field2, field3, ... "
InsString2 = " VALUES ('" & Variable1 & "', '" & Variable2 & "', '"
& Variable3, .... "') ;"
InsString = InsString1 & InsString2
dbsParm.Execute InsString

J'obtiens un message d'erreur de syntaxe, pourtant en vérifiant la chaine
'InsString' dans le debogueur, elle me parait correcte
Doit-on garder le point-virgule en fin d'instruction, la procedure
'dbsParm.Execute' est-elle correcte ? (Set dbsParm = CurrentDb)
peut on tester directement la commande INSERT sans passer par une procédure ?
Merci

7 réponses

Avatar
Philippe [MS]
Bonjour,

UItilise plutôt : Docmd.runsql InsString

Phil.

"Benoit F." wrote in message
news:
Bonjour,
j'essai d'utiliser la commande INSERT INTO target [(field1[, field2[,
...]])]

VALUES (value1[, value2[, ...]) pour inserer un nouvel enregistrement dans
une table.
j'utilise le code suivant dans une procédure :
InsString1 = "INSERT INTO MaTable (field1, field2, field3, ... "
InsString2 = " VALUES ('" & Variable1 & "', '" & Variable2 & "',
'"

& Variable3, .... "') ;"
InsString = InsString1 & InsString2
dbsParm.Execute InsString

J'obtiens un message d'erreur de syntaxe, pourtant en vérifiant la chaine
'InsString' dans le debogueur, elle me parait correcte
Doit-on garder le point-virgule en fin d'instruction, la procedure
'dbsParm.Execute' est-elle correcte ? (Set dbsParm = CurrentDb)
peut on tester directement la commande INSERT sans passer par une
procédure ?

Merci


Avatar
3stone
"Philippe [MS]"
UItilise plutôt : Docmd.runsql InsString



Hmmm...
C'est bien ".Execute" qui évite les messages d'avertissements...


j'essai d'utiliser la commande INSERT INTO target [(field1[, field2[,
...]])]

VALUES (value1[, value2[, ...]) pour inserer un nouvel enregistrement dans
une table.
j'utilise le code suivant dans une procédure :
InsString1 = "INSERT INTO MaTable (field1, field2, field3, ... "
InsString2 = " VALUES ('" & Variable1 & "', '" & Variable2 & "', '"
& Variable3, .... "') ;"
InsString = InsString1 & InsString2
dbsParm.Execute InsString




De un:

pourquoi tu ne donne pas le code complet ?
tu as mis une ")" après l'énumération de tes "Field" ?

De deux:

Values ('" & Variable1 & "', '" & ....

tu est sûr que toutes tes variables sont bien de type "String" ?
si non, enlève les quotes (apostrophes) qui entoure la/les variables
numériques !


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome


Avatar
Benoit F.
Bonjour
Voici le résultat du code (repris dans la fenètre debogage:
InsString1 : "INSERT INTO Medecins (Secteur, Nom, Ville, Spécialité,
Telephone1, Remarque1, Telephone2, Remarque2, N°, Rue, CP, NV) " : String
InsString2 : " VALUES ('01', 'DUCHMOL ERIC', 'POITIERS', 'GEN', '05 99 78 99
99', 'Cabinet', '06 99 99 99 99', 'Portable', ' 99', 'CINQ CITES', '86000',
'PL') ;" : String
je concatène les 2 chaines avant de lancer .execute ... mais erreur de
syntaxe :-((

merci de la réponse

"Philippe [MS]"
UItilise plutôt : Docmd.runsql InsString



Hmmm...
C'est bien ".Execute" qui évite les messages d'avertissements...


j'essai d'utiliser la commande INSERT INTO target [(field1[, field2[,
...]])]

VALUES (value1[, value2[, ...]) pour inserer un nouvel enregistrement dans
une table.
j'utilise le code suivant dans une procédure :
InsString1 = "INSERT INTO MaTable (field1, field2, field3, ... "
InsString2 = " VALUES ('" & Variable1 & "', '" & Variable2 & "', '"
& Variable3, .... "') ;"
InsString = InsString1 & InsString2
dbsParm.Execute InsString




De un:

pourquoi tu ne donne pas le code complet ?
tu as mis une ")" après l'énumération de tes "Field" ?

De deux:

Values ('" & Variable1 & "', '" & ....

tu est sûr que toutes tes variables sont bien de type "String" ?
si non, enlève les quotes (apostrophes) qui entoure la/les variables
numériques !


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome









Avatar
3stone
Salut,

"Benoit F."
Voici le résultat du code (repris dans la fenètre debogage:
InsString1 : "INSERT INTO Medecins (Secteur, Nom, Ville, Spécialité,
Telephone1, Remarque1, Telephone2, Remarque2, N°, Rue, CP, NV) " : String
InsString2 : " VALUES ('01', 'DUCHMOL ERIC', 'POITIERS', 'GEN', '05 99 78 99
99', 'Cabinet', '06 99 99 99 99', 'Portable', ' 99', 'CINQ CITES', '86000',
'PL') ;" : String
je concatène les 2 chaines avant de lancer .execute ... mais erreur de
syntaxe :-((



Il semble que le champ "Secteur" soit numérique...


donc:

InsString2 = " VALUES (" & Variable1 & ", '" & Variable2 & "', '" & Variable3, .... "') ;"


===> SANS les apostrophes entourant la Variable1


PS: J'espère que CP et N° sont de type texte (ils devraient l'être)


--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome

Avatar
Benoit F.
Merci à Philippe et à 3stone
en fait j'utilisais un champ intitulé "N°" qui induisait un erreur de
syntaxe, "No" ne pose pas de problème.
.Execute semble être limité à une chaine de 256 caractères
Docmd.runsql a des limites beaucoup plus larges


Bonjour,
j'essai d'utiliser la commande INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...]) pour inserer un nouvel enregistrement dans
une table.
j'utilise le code suivant dans une procédure :
InsString1 = "INSERT INTO MaTable (field1, field2, field3, ... "
InsString2 = " VALUES ('" & Variable1 & "', '" & Variable2 & "', '"
& Variable3, .... "') ;"
InsString = InsString1 & InsString2
dbsParm.Execute InsString

J'obtiens un message d'erreur de syntaxe, pourtant en vérifiant la chaine
'InsString' dans le debogueur, elle me parait correcte
Doit-on garder le point-virgule en fin d'instruction, la procedure
'dbsParm.Execute' est-elle correcte ? (Set dbsParm = CurrentDb)
peut on tester directement la commande INSERT sans passer par une procédure ?
Merci


Avatar
Philippe [MS]
Pas de problème.

Merci de votre retour.

Phil.

"Benoit F." wrote in message
news:
Merci à Philippe et à 3stone
en fait j'utilisais un champ intitulé "N°" qui induisait un erreur de
syntaxe, "No" ne pose pas de problème.
.Execute semble être limité à une chaine de 256 caractères
Docmd.runsql a des limites beaucoup plus larges


Bonjour,
j'essai d'utiliser la commande INSERT INTO target [(field1[, field2[,
...]])]


VALUES (value1[, value2[, ...]) pour inserer un nouvel enregistrement
dans


une table.
j'utilise le code suivant dans une procédure :
InsString1 = "INSERT INTO MaTable (field1, field2, field3, ...
"


InsString2 = " VALUES ('" & Variable1 & "', '" & Variable2 &
"', '"


& Variable3, .... "') ;"
InsString = InsString1 & InsString2
dbsParm.Execute InsString

J'obtiens un message d'erreur de syntaxe, pourtant en vérifiant la
chaine


'InsString' dans le debogueur, elle me parait correcte
Doit-on garder le point-virgule en fin d'instruction, la procedure
'dbsParm.Execute' est-elle correcte ? (Set dbsParm = CurrentDb)
peut on tester directement la commande INSERT sans passer par une
procédure ?


Merci




Avatar
bourdugephilippe
pas de point virgule à la fin de la chaine àla fin et essaye la comande

docmd.runsql insstring

ca devrait aller mieux