[access 2003, VBA ] erreur d'execution 3137

[Résolu/Fermé]
Signaler
Messages postés
38
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
16 février 2010
-
Messages postés
420
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
-
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

Messages postés
814
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
17 avril 2020
118
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.
Messages postés
420
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
130
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
Messages postés
814
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
17 avril 2020
118
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.
Messages postés
38
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
16 février 2010
3
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 & "'); 
Messages postés
38
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
16 février 2010
3
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 ?
Messages postés
420
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
12 mars 2009
130
non je ne pense pas au moins tu n as pas besoin de mettre de ligne supplémentaire