[access 2003, VBA ] erreur d'execution 3137

Résolu
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
Configuration: Windows 2000
Internet Explorer 6.0

5 réponses

  1. 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.
    1. 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
      1. 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.
    2. 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 & "'); 
      1. 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 ?
        1. non je ne pense pas au moins tu n as pas besoin de mettre de ligne supplémentaire