OVH Cloud OVH Cloud

Problème de synthaxe requête

6 réponses
Avatar
lolo_bob2
Bonjour =E0 tous

Voila j'ai essay=E9 de faire ces requetes mais j'ai un message d'erreur
je ne sais pas pourquoi !
J'ai mis tous les champs de ma table enr_produits pour les supprimer et
les envoyer dans la table Archive
Est ce que je suis obliger de mettre tous les champs pour que le
produits souhait=E9 soit dirig=E9 vers la table archive ?

j'ai ce code qui me provoque une erreur :


Code :
Private Sub Archiver_Click()
Dim sql1 As String, sql2 As String

sql1 =3D "INSERT INTO archive ( numero, sap_reference, standard,
old_reference, certificate_number, type_report, initial_type_report,
extension_number, extension_file, item, brand, production_plant,
placement_on_to_the_market, Notified_body, Comments, price,
invoice_date, date_of_sending_sample_for_homologation,
date_of_sending_technical_file_brand_CE_extension_file,
reference_test_11B, date_of_CE_declaration, AFAQ, Family, photo,
technical_specifications_FR, technical_specifications_EN, Static_Test,
Dynamic_Test, Famil_completey_test, Static Test report number, Agrement
number, Dynamic Test report number ) " & _
"SELECT enr_produits.numero, enr_produits.sap_reference,
enr_produits.standard, enr_produits.old_reference,
enr_produits.certificate_number, enr_produits.type_report,
enr_produits.initial_type_report, enr_produits.extension_number,
enr_produits.extension_file, enr_produits.item, enr_produits.brand,
enr_produits.production_plant, enr_produits.placement_on_to_the_market,
enr_produits.Notified_body, enr_produits.Comments, enr_produits.price,
enr_produits.invoice_date, enr_produits.invoice_date,
enr_produits.date_of_sending_sample_for_homologation,
enr_produits.date_of_sending_technical_file_brand_CE_extension_file,
enr_produits.reference_test_11B, enr_produits.date_of_CE_declaration"
enr_produits.AFAQ, enr_produits.Family, enr_produits.photo,
enr_produits.technical_specifications_FR,
enr_produits.technical_specifications_EN, enr_produits.Static_Test,
enr_produits.Dynamic_Test, enr_produits.Famil_completey_test,
enr_produits.Static Test report number, enr_produits.Agrement number,
enr_produits.Dynamic Test report number" & _
"FROM enr_produits " & _
"WHERE numero=3D'" & Me![Name] & "'"

sql2 =3D "DELETE * " & _
"FROM enr_produits " & _
"WHERE numero=3D'" & Me![Name] & "'"

CurrentDb.Execute (sql1)
CurrentDb.Execute (sql2)

End Sub

Il me met ce message :

Erreur de compilation, attendu fin d'instruction
J'ai eu une erreur d=E8s que j'ai changer de ligne pour le SELECT de la
premi=E8re requ=EAte

Je vois pas quel est le probl=E8me pouvez vous m'aidez ?
Merci=20

A+

6 réponses

Avatar
Eric
Bonjour,

Cela est du au fait que tu as des noms de champs contenant un espace,
par exemple : enr_produits.Static Test report number,
enr_produits.Agrement number.

Il faudrait les entourer avec des [ et ] du genre:
enr_produits.[Static Test report number].

Je n'ai pas lu tout le détail de l'instruction Insert into archive(...)
et du Select ... from ... mais à première vue les champs ont les même
noms et sont dans le même ordre dans les 2 tables. Donc tu pourrais
faire, sous réserve que ça soit le cas:
Insert into Archive Select * from enr_produits where ...

Bonjour à tous

Voila j'ai essayé de faire ces requetes mais j'ai un message d'erreur
je ne sais pas pourquoi !
J'ai mis tous les champs de ma table enr_produits pour les supprimer et
les envoyer dans la table Archive
Est ce que je suis obliger de mettre tous les champs pour que le
produits souhaité soit dirigé vers la table archive ?

j'ai ce code qui me provoque une erreur :


Code :
Private Sub Archiver_Click()
Dim sql1 As String, sql2 As String

sql1 = "INSERT INTO archive ( numero, sap_reference, standard,
old_reference, certificate_number, type_report, initial_type_report,
extension_number, extension_file, item, brand, production_plant,
placement_on_to_the_market, Notified_body, Comments, price,
invoice_date, date_of_sending_sample_for_homologation,
date_of_sending_technical_file_brand_CE_extension_file,
reference_test_11B, date_of_CE_declaration, AFAQ, Family, photo,
technical_specifications_FR, technical_specifications_EN, Static_Test,
Dynamic_Test, Famil_completey_test, Static Test report number, Agrement
number, Dynamic Test report number ) " & _
"SELECT enr_produits.numero, enr_produits.sap_reference,
enr_produits.standard, enr_produits.old_reference,
enr_produits.certificate_number, enr_produits.type_report,
enr_produits.initial_type_report, enr_produits.extension_number,
enr_produits.extension_file, enr_produits.item, enr_produits.brand,
enr_produits.production_plant, enr_produits.placement_on_to_the_market,
enr_produits.Notified_body, enr_produits.Comments, enr_produits.price,
enr_produits.invoice_date, enr_produits.invoice_date,
enr_produits.date_of_sending_sample_for_homologation,
enr_produits.date_of_sending_technical_file_brand_CE_extension_file,
enr_produits.reference_test_11B, enr_produits.date_of_CE_declaration"
enr_produits.AFAQ, enr_produits.Family, enr_produits.photo,
enr_produits.technical_specifications_FR,
enr_produits.technical_specifications_EN, enr_produits.Static_Test,
enr_produits.Dynamic_Test, enr_produits.Famil_completey_test,
enr_produits.Static Test report number, enr_produits.Agrement number,
enr_produits.Dynamic Test report number" & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

sql2 = "DELETE * " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

CurrentDb.Execute (sql1)
CurrentDb.Execute (sql2)

End Sub

Il me met ce message :

Erreur de compilation, attendu fin d'instruction
J'ai eu une erreur dès que j'ai changer de ligne pour le SELECT de la
première requête

Je vois pas quel est le problème pouvez vous m'aidez ?
Merci

A+



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
lolo_bob2
Merci je test avec ta méthode

Private Sub Archiver_Click()
Dim sql1 As String, sql2 As String

sql1 = "INSERT INTO Archive ( numero, sap_reference, standard,
old_reference, certificate_number, type_report, initial_type_report,
extension_number, extension_file, item, brand, production_plant,
placement_on_to_the_market, Notified_body, Comments, price,
invoice_date, date_of_sending_sample_for_homologation,
date_of_sending_technical_file_brand_CE_extension_file,
reference_test_11B, date_of_CE_declaration, AFAQ, Family, photo,
technical_specifications_FR, technical_specifications_EN, Static_Test,
Dynamic_Test, Famil_completey_test, Static Test report number, Agrement
number, Dynamic Test report number ) " & _
"SELECT * " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

sql2 = "DELETE * " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

CurrentDb.Execute (sql1)
CurrentDb.Execute (sql2)

End Sub

Il me dit erreur de synthaxe dans l'expression insert into

Je comprend pas tout des fois ?
peut tu m'en dire plus ?

Merci
Avatar
Eric
re,

Tu as toujours des noms de champs avec espace :
*Static Test report number, Agrement number, Dynamic Test report number*
dans la définition de la table Archive { Insert Into Archive(...Static
Test report number, ...}, donc encadres avec des crochets droits chacun
de ces champs et ceux que j'aurais oublié de voir.
Ok ?

Les champs sont les mêmes et dans le même ordre ? Si Oui, alors
simplifies à l'extrême par ce que je t'ai donné.

Merci je test avec ta méthode

Private Sub Archiver_Click()
Dim sql1 As String, sql2 As String

sql1 = "INSERT INTO Archive ( numero, sap_reference, standard,
old_reference, certificate_number, type_report, initial_type_report,
extension_number, extension_file, item, brand, production_plant,
placement_on_to_the_market, Notified_body, Comments, price,
invoice_date, date_of_sending_sample_for_homologation,
date_of_sending_technical_file_brand_CE_extension_file,
reference_test_11B, date_of_CE_declaration, AFAQ, Family, photo,
technical_specifications_FR, technical_specifications_EN, Static_Test,
Dynamic_Test, Famil_completey_test, Static Test report number, Agrement


là ------^^^^

number, Dynamic Test report number ) " & _


et là encore ------^^^^

"SELECT * " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
lolo_bob2
Re

Je viens de faire un test en supprimant tous les champs et en ne
laisant que le champs numéro
Ce champ est un champ numéro automatique...
Ca me donne :

Private Sub Archiver_Click()
Dim sql1 As String, sql2 As String

sql1 = "INSERT INTO Archive (numero) " & _
"SELECT enr_produits.numero " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

sql2 = "DELETE * " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

CurrentDb.Execute (sql1)
CurrentDb.Execute (sql2)

End Sub


erreur : type de données incompatible dans l'expression du crière...
est ce que les variante du départ sont correctes car string c'est bien
une chaine de caractère c'est ça ? et la j'envoie un numéro...

Merci de ton aide

A+
Avatar
Eric
Le problème se situe là:
"WHERE numero='" & Me![Name] & "'"
Que contient Me![Name] si du texte ce n'est pas possible car numero est
un champ numérique. Si Me![Name] contient une valeur numérique alors il
faut enlever les ' pour avoir: "WHERE numero=" & Me![Name]
mais bon, je suis inquiet car, à lire, Me![Name] me parait être du texte.

(Remarque : Name est un mauvais choix car c'est un mot réservé , tu
risques d'avoir des soucis)

Re

Je viens de faire un test en supprimant tous les champs et en ne
laisant que le champs numéro
Ce champ est un champ numéro automatique...
Ca me donne :

Private Sub Archiver_Click()
Dim sql1 As String, sql2 As String

sql1 = "INSERT INTO Archive (numero) " & _
"SELECT enr_produits.numero " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

sql2 = "DELETE * " & _
"FROM enr_produits " & _
"WHERE numero='" & Me![Name] & "'"

CurrentDb.Execute (sql1)
CurrentDb.Execute (sql2)

End Sub


erreur : type de données incompatible dans l'expression du crière...
est ce que les variante du départ sont correctes car string c'est bien
une chaine de caractère c'est ça ? et la j'envoie un numéro...

Merci de ton aide

A+



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
lolo_bob2
Merci beaucoup

C'était effectivement un champ numérique et maintenant tout
fonctionne

Merci beaucoup de votre aide

A+