Rechercher : dans
Par :

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

Dernière réponse le 6 jun 2008 à 16:43:32 lina012, le 6 jun 2008 à 14:58:34 
 Signaler ce message aux modérateurs

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

1

julplemet, le 6 jun 2008 à 15:01:38

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

Répondre à julplemet

2

lina012, le 6 jun 2008 à 15:07:21

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

Répondre à lina012

3

julplemet, le 6 jun 2008 à 15:08:52

Oui dans cette ligne les & qui entourent chaque variable, je vois pas ce qu'ils signifient

Répondre à julplemet

5

lina012, le 6 jun 2008 à 15:17:27

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 http://www.vbfrance.com/infomsg_PROBLEME-AVEC-INSERT-INTO_959617.aspx mais je n'arrive pas à comprendre

merci

Répondre à lina012

4

julplemet, le 6 jun 2008 à 15:13:44

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

Répondre à julplemet

6

lina012, le 6 jun 2008 à 15:21:06

Ca me donne erreur de compilation, variable non définie ...
pourtant je crois avoir défini toutes les variables ...

Répondre à lina012

7

julplemet, le 6 jun 2008 à 15:23:46

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

Répondre à julplemet

8

lina012, le 6 jun 2008 à 15:28:37

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.

Répondre à lina012

9

julplemet, le 6 jun 2008 à 15:43:17

(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

Répondre à julplemet

10

lina012, le 6 jun 2008 à 15:55: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 ???

Répondre à lina012

11

julplemet, le 6 jun 2008 à 15:59:43

La je n'en sais rien. Sous quoi fonctionne ta base SQL ?

Répondre à julplemet

12

lina012, le 6 jun 2008 à 16:03:10

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 ...

Répondre à lina012

13

 lina012, le 6 jun 2008 à 16:43:32

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.

Répondre à lina012