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

Résolu/Fermé
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 - 6 juin 2008 à 14:58
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 - 6 juin 2008 à 16:43
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.

4 réponses

julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79
6 juin 2008 à 15:01
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
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
6 juin 2008 à 15:07
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
julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79
6 juin 2008 à 15:08
Oui dans cette ligne les & qui entourent chaque variable, je vois pas ce qu'ils signifient
0
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
6 juin 2008 à 15:17
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
julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79
6 juin 2008 à 15:13
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
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
6 juin 2008 à 15:21
ca me donne erreur de compilation, variable non définie ...
pourtant je crois avoir défini toutes les variables ...
0
julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79 > lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
6 juin 2008 à 15:23
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
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 > julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009
6 juin 2008 à 15:28
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
julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79
6 juin 2008 à 15:43
(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
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
6 juin 2008 à 15:55
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
julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79 > lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008
6 juin 2008 à 15:59
La je n'en sais rien. Sous quoi fonctionne ta base SQL ?
0
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 > julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009
6 juin 2008 à 16:03
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
lina012 Messages postés 51 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 > julplemet Messages postés 331 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009
6 juin 2008 à 16:43
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