[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. non je ne pense pas au moins tu n as pas besoin de mettre de ligne supplémentaire
    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. 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. 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,

          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.