[access 2003, VBA ] erreur d'execution 3137

Résolu/Fermé
Milyshyn Messages postés 38 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2010 - 30 janv. 2008 à 10:11
laetitia02 Messages postés 424 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 12 mars 2009 - 30 janv. 2008 à 10:49
Bonjour,
voilà, j'ai un soucis de requete sql : Je voudrais inserer des donnée dans une table.

Voici mon code :
Set rst4 = CurrentDb.OpenRecordset(" select id_groupe from groupe_details")
 
CurrentDb.Execute "insert into groupe(nom_groupe,liste_compte) values ('" & groupe & "','" & strlist & "') where id_groupe=" & rst4!id_groupe & " 


Il me génere une erreur d'execution 3137, point virgule absent à la fin de l'instruction sql.

le rst4!id_groupe correspont à l'id groupe d'une table, elle est pratiquement identique à celle où je veux inserer mes données.
1) j'inserer mes données dans ma table groupe_details id_groupe ; compte
2)j'inserer d'autre données dans une autre table ou l'id_groupe est identique.

Tout cela ce fait via un formulaire, le code provient d'un evenement click.

merci

5 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
30 janv. 2008 à 10:26
Salut,

Je pense que vous avez plusieurs erreurs:

1. Pour access il faut toujours un ";" à la fin de la requete, cette erreur est dans:

Set rst4 = CurrentDb.OpenRecordset(" select id_groupe from groupe_details ;")
^

2. Pour la deuxième requete: il n'y a pas de "Wher" dans une requete de type "insert into" cela doit generer une erreur, Pour la corriger deux cas figurent:

a. Si vous voulez inserer dans la table une nouvelle ligne: vous devez mettre

insert into groupe(id_group,nom_groupe,liste_compte) values (" & rst4!id_groupe & ", '" & groupe & "','" & strlist & "');

b. Vous voulez faire une mise à jour:

Update groupe set nom_groupe = '" & groupe & "' and liste_compte= '" & strlist &"' where id_groupe=" & rst4!id_groupe & ";"


Bon courage.
0
laetitia02 Messages postés 424 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 12 mars 2009 129
30 janv. 2008 à 10:41
bonjour
dans les requete en vb il n y a pas besoin de ";" comme le dit precedement tarek_dotzero, l erreur viens du currentdb il faut d'abord faire
dim mabase as database
dim req as string
req="select id_groupe from groupe_detail"
set rst4=mabase.openrecordset(req)
req="update groupe set nom_groupe='" & groupe & "' and liste_compte='" & strlist & "' where id_groupe='" & rst4!id_groupe & "'"
docmd.runsql(req)

voila
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
30 janv. 2008 à 10:43
Salut,

Merci pour corriger mon erreur. D'habitude j'utilise doCmd.runSQL et je mettais tjrs le ";", mais j'espere que j'ai raison dans la deuxième partie.
0
Milyshyn Messages postés 38 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2010 3
30 janv. 2008 à 10:43
salut,
Pour ma part on me tutoie...
c'est parfait la requete marche à merveille...merci beaucoup

Set rst4 = CurrentDb.OpenRecordset(" select id_groupe from groupe_details ;") 
insert into groupe(id_group,nom_groupe,liste_compte) values (" & rst4!id_groupe & ", '" & groupe & "','" & strlist & "'); 
0
Milyshyn Messages postés 38 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 16 février 2010 3
30 janv. 2008 à 10:47
Set rst4 = CurrentDb.OpenRecordset(" select id_groupe from groupe_details ;")


    
CurrentDb.Execute "insert into groupe(id_groupe,nom_groupe,liste_compte) values (" & rst4!id_groupe & ", '" & groupe & "','" & strlist & "'); "


Voila la syntaxe exacte. Je n'ai pas eu besoin d'utiliser docmd.runsql...

POurquoi???? cela changer quelque chose ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
laetitia02 Messages postés 424 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 12 mars 2009 129
30 janv. 2008 à 10:49
non je ne pense pas au moins tu n as pas besoin de mettre de ligne supplémentaire
0