Problème d'xécution de requête SQL

Résolu
lina012 Messages postés 51 Statut Membre -  
lina012 Messages postés 51 Statut Membre -
Bonjour,

j'ai un problème dans une requête sql.
En fait, j'ai créé une base sur access, et je travaille sur une application vb pour visualiser les données, ajouter des enregistrements, supprimer d'autres...
Pour le moment, je n'arrive pas à ajouter des enregistrements à ma table , le compilo m'indique que l'erreur se trouve dans ma requête.

donc j'ai une table etudiant avec IdEtudiant, NomEtudiant et PrenomEtudiant
et dans ma form sur vb j'ai 3TextBox ou je veux écrire mes enregistrements pour les ajouter par ma suite dans ma base access :

voilà la fonction :

Private Sub Ajouter_Click()
Dim NomE, PrenomE As String
Dim IdE As Integer

Dim MaTable, MonSQL As String

IdE = Text1.Text
NomE = Text2.Text
PrenomE = Text3.Text

MaTable = "Etudiant"

' Requête SQL d'insertion
MonSQL = "INSERT INTO " & MaTable & " ("
MonSQL = MonSQL & "IdEtudiant"
MonSQL = MonSQL & ",NomEtudiant"
MonSQL = MonSQL & ",PrenomEtudiant"
MonSQL = MonSQL & ") VALUES ("
Mon SQL= MonSQL & "&IdE&" & ",""&NomE&" & ",""&PrenomE&"
MonSQL = MonSQL & ")"

db.Execute (MonSQL) ' j'exécute ma requête d'ajout, le compilo bloque et me surligne ça

End Sub

j'ai le message d'erreur suivant : erreur 3075 opérateur de syntaxe absent.
ça me surligne le db.Execute

quelqu'un a une idée de la manière comment on peut résoudre ce problème pour que je puisse rajouter mes enregistrements dans ma table ???

merci.
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. julplemet Messages postés 325 Date d'inscription   Statut Membre 79
     
    Y'a une erreur a l'avant derniere ligne des affectations monSQL (tas mis mon SQL)

    Pour eviter ce genre derreurs, tu ajoutes "option explicit" en haut de ton code et tu declares proprement tes variables
    0
    1. lina012 Messages postés 51 Statut Membre
       
      merci pour ta réponse , mais en fait , j'avais déjà déclaré le explicit, j'ai rectifié aussi mais ca marche pas, je pense que c'est une faute dans la ligne en gras mais je n'arrive pas à trouver où ca bloque.

      Private Sub Ajouter_Click()
      Dim NomE, PrenomE As String
      Dim IdE As Integer
      Dim strTable, strSQL As String

      IdE = Text1.Text
      NomE = Text2.Text
      PrenomE = Text3.Text

      strTable = "Etudiant"

      ' Requête SQL d'insertion
      strSQL = "INSERT INTO " & strTable & " ("
      strSQL = strSQL & "IdEtudiant"
      strSQL = strSQL & ",NomEtudiant"
      strSQL = strSQL & ",PrenomEtudiant"
      strSQL = strSQL & ") VALUES ("
      strSQL = strSQL & "&IdE&" & ",""&NomE&" & ",""&PrenomE&"
      strSQL = strSQL & ")"

      ' Exécute la requête d'ajout des données dans la table
      db.Execute (strSQL)

      End Sub



      merci
      0
  2. julplemet Messages postés 325 Date d'inscription   Statut Membre 79
     
    Oui dans cette ligne les & qui entourent chaque variable, je vois pas ce qu'ils signifient
    0
    1. lina012 Messages postés 51 Statut Membre
       
      oui c'est sûr que c'est là ou ca bloque , je suis débutante , et la syntaxe sur vb ce n'est pas mon point fort .

      strSQL = strSQL & "IdE" & ",""NomE" & ",""PrenomE"
      erreur de synatxe, opérateur absent dans NomE, PrenomE



      j ai trouvé le même problème en résolu sur https://codes-sources.commentcamarche.net/ mais je n'arrive pas à comprendre

      merci
      0
  3. julplemet Messages postés 325 Date d'inscription   Statut Membre 79
     
    Ah non non en fait tu fais des erreurs avec tes guillemets !

    ca doit donner
    strSQL = "INSERT INTO " & strTable & " ('" & IdEtudiant & "','" & NomEtudiant & "','" & PrenomEtudiant & "') VALUES ('" & IdE &"','" & NomE & "','" & PrenomE & "')"

    Copie colle ce code et a voir si il n'y a pas un point virgule en fin de requete
    0
    1. lina012 Messages postés 51 Statut Membre
       
      ca me donne erreur de compilation, variable non définie ...
      pourtant je crois avoir défini toutes les variables ...
      0
      1. julplemet Messages postés 325 Date d'inscription   Statut Membre 79 > lina012 Messages postés 51 Statut Membre
         
        Oui désolé la c'est moi qui suis a l'ouest

        Il faut ecrire
        strSQL = "INSERT INTO " & strTable & " ('IdEtudiant','NomEtudiant','PrenomEtudiant') VALUES ('" & IdE &"','" & NomE & "','" & PrenomE & "')"

        Réessaie maintenant et quand ca marche oublie pas d'essayer de comprendre pourquoi par rapport a avant (les & n'entourent que les variables VB a l'exterieur des guillemets)

        Bon courage
        0
      2. lina012 Messages postés 51 Statut Membre > julplemet Messages postés 325 Date d'inscription   Statut Membre
         
        merci beaucoup de me répondre à chaque fois aussi rapidement .

        maintenant, ca me donne une autre erreur :
        erreur 3127
        L'instruction INSERT INTO contient le nom de champ inconnu suivant : IdEtudiant
        Assurez-vous que vous avez correctement saisi le nom , puis recommencez l'opération

        c un peu bizarre car je viens d'aller voir dans la base et les noms des champs sont identiques.
        0
  4. julplemet Messages postés 325 Date d'inscription   Statut Membre 79
     
    (desole d'avoir mis plsu de temps mais jme suis absente un instant)

    Oui eh bien là tu dois surveiller que les majuscules sont bien placées au meme endroit pour avoir exactement le meme nom que ton champ

    Essaie aussi d'enlever les ' que j'avais mises pour voir ce que ca donne
    0
    1. lina012 Messages postés 51 Statut Membre
       
      merci encore .
      mais le problème se pose toujours , j'ai enlevé les ' mais ça me renvoie à la fonction de lecture des données qui marche nikel, ça me dit à ce moment là que le blc with n'est pas défini, je remets les ' , je vérifie les majuscules et tt mais je retrouve mon erreur de variable non reconnue.
      je me demande si c'est une histoire d'espace ou quelque chose comme ça...
      tu penses que je dois penser à utiliser la fonction trim ???
      0
      1. julplemet Messages postés 325 Date d'inscription   Statut Membre 79 > lina012 Messages postés 51 Statut Membre
         
        La je n'en sais rien. Sous quoi fonctionne ta base SQL ?
        0
      2. lina012 Messages postés 51 Statut Membre > julplemet Messages postés 325 Date d'inscription   Statut Membre
         
        en fait, j ai créé une base type access (mdb) sur VisData et je code sous vb6 (DAO)
        genre l ouverture de la base
        lecture des données
        l'ajout des enregistrements
        la suppresssion ...
        0
      3. lina012 Messages postés 51 Statut Membre > julplemet Messages postés 325 Date d'inscription   Statut Membre
         
        en fait, en enlevant les ' -comme tu m'as dit- , j'arrive à rajouter les enregistrements dans ma base (ENFIN !!) même si j'ai un message d'erreur qui est en rapport à ma fonction d'actualisation des enregistrements que j'appelle pour remettre tout de suite le nom de l'étudiant dans ma liste défilante, mais du coup, je l'ai enlevé maintenant, c'est pas grave, je dois ré-exécuter mon programme pour l'avoir , le plus important c'est que CA MARCHE :)
        Voilà, c'est bien RESOLU grâce à toi julplemet.
        Merci.
        @bientôt.
        0