Problème syntaxe SQL INSERT

Résolu
julieneni Messages postés 4 Date d'inscription vendredi 8 juin 2012 Statut Membre Dernière intervention 13 juin 2012 - 13 juin 2012 à 12:44
julieneni Messages postés 4 Date d'inscription vendredi 8 juin 2012 Statut Membre Dernière intervention 13 juin 2012 - 13 juin 2012 à 18:28
Bonjour à tous

Je vous remercie par avance de bien vouloir prendre quelques secondes pour un problème qui est peut être un problème de débutant mais qui me rend dingue !!!


environnement visual basic express 2010, access 2003


je fais une requête depuis vb.net vers access pour insérer une ligne dans une table, jusque là ok , il se trouve qu'à l’exécution , vb lève une exception "Erreur de syntaxe dans l'instruction INSERT INTO."

Alors qu'en mode requête sql directement dans access , la syntaxe est correcte et elle fonctionne !!!
Je ne comprends pas où est l'erreur

voici la requête

INSERT INTO Utilisateurs (Nom,Prenom,mail,login,password,enable)  
VALUES ('az','az','az','az','az','1');


Quelqu'un aurait une piste ?

12 réponses

julieneni Messages postés 4 Date d'inscription vendredi 8 juin 2012 Statut Membre Dernière intervention 13 juin 2012
13 juin 2012 à 18:27
Bonsoir Messieurs

Après quelques heures de recherche j'ai fini par trouver la solution

La requête marche en mode sql d'access et pas en vb.net car il semble que le nom password soit réservé

j'ai changé le nom de la colonne de "password" en "pass"

Ce code est invalide

INSERT INTO Utilisateurs (Nom,Prenom,mail,login,password,enable)  
VALUES ('az','az','az','az','az','1');


Ce code est valide

INSERT INTO Utilisateurs (Nom,Prenom,mail,login,pass,enable)  
VALUES ('az','az','az','az','az','1');


Je ne sais pas si je dois être heureux d'avoir trouvé ou bien chialer !!!


Merci à tous ceux qui ont passés du temps sur ma recherche

bonne soirée
3
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juin 2012 à 12:57
Bonjour,

il manque des espaces après les virgules:

INSERT INTO Utilisateurs (Nom, Prenom, mail, login, password, enable)  
('az', 'az', 'az', 'az', 'az', '1');


De quel type est enable ?




[] Ce qui va sans dire. va mieux en le disant.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
13 juin 2012 à 13:05
Bonjour,
C'est "fou" (sans vouloir insister sur cet adjectif), comme commencent à fleurir les sujets "qui rendent dinguent" , sans être précisés dans leur titre !
A quand l'ouverture d'une sous-section : "difficulté qui rend dingue", pendant qu'on y est ? .
Car gouverner, c'est prévoir, non ?
Je sors, mais j'insiste quand-même sur le caractère inadmissible de certains titres. Si vous me cherchez : je suis dans la pièce à côté (et j'y ronfle sans complexe).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 juin 2012 à 13:26
Les espaces après les virgules ne sont pas la sources du problème, ils ne sont pas obligatoire et le moteur SQL les ignorent quant ils y sont.

PAr contre le type de Enable peut-être intéressant. S'il s'agit d'un boolean, il ne faut pas mettre de ' pour la valeur.

Sinon le détail de l'erreur SQL pourrait grandement aider aussi


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juin 2012 à 14:43
détail de l'erreur SQL :
"Erreur de syntaxe dans l'instruction INSERT INTO."

Ma questio sur le type était superflue !
L' erreur aurait été "type de donnée incompatible".

Si l' espace après la virgule est ignoré, celui après la parenthèse ouvrante et celui avant la parenthèse fermante devra compter, non ?

INSERT INTO Utilisateurs ( Nom, Prenom, mail, login, password, enable )  
( 'az', 'az', 'az', 'az', 'az', '1' );


[] Ce qui va sans dire. va mieux en le disant.
0
julieneni Messages postés 4 Date d'inscription vendredi 8 juin 2012 Statut Membre Dernière intervention 13 juin 2012
13 juin 2012 à 14:55
vraiment désolé que le titre flou est pu gêner, j'ai écris ce post guidé par l'emotion
Mais je comprends bien que ce n'est pas une raison , heureusement un modo a corrigé .

Cependant ce problème me rend vraiment dingue, je n ai pas de piste !!!!

Pour la question enable est de type boolean

voila
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 juin 2012 à 15:45
[quote=LIBRE_MAX]détail de l'erreur SQL :
"Erreur de syntaxe dans l'instruction INSERT INTO."

Ma questio sur le type était superflue !
L' erreur aurait été "type de donnée incompatible"./quote
Non pas forcément. Le message d'erreur est renvoyé par le moteur SQL, par la base de données pour faire simple. Il renvoit "Erreur de syntaxe dans l'instruction INSERT INTO.", mais généralement le message est plus long que ça avec en complément des détails sur l'erreur.

[quote=LIBRE_MAX]Si l' espace après la virgule est ignoré, celui après la parenthèse ouvrante et celui avant la parenthèse fermante devra compter, non ? /quoteNormalement pas plus.

[quote=julieneni]Pour la question enable est de type boolean /quote
Donc, c'est bien ce que je disais, il ne faut pas mettre de ' autour du 1 dans les Values


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juin 2012 à 16:42
T' avais raison casy.
Je viens de tester sans les espaces et ça fonctionne.
Et de surcroît avec:

"INSERT INTO Utilisateurs (Nom,Prenom,enable) " & _  
"SELECT 'az' AS Expr1,'az' AS Expr2,1 AS Expr3;"


j' ai pris l' habitude de travailler avec select , mais jamais avec Values.
C' est peut être pour ça que j' avais des doutes.



[] Ce qui va sans dire. va mieux en le disant.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 juin 2012 à 17:07
[quote=LIBRE_MAX]j' ai pris l' habitude de travailler avec select , mais jamais avec Values. /quoteOui, enfin avec des constantes (comme le cas présent, ou des données externes à la base de données, je vois pas trop l’intérêt.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juin 2012 à 17:53
Pas forcémnt des constantes.Il peut s' agir de variables.
Pas forcémnt non plus des données externes à la base de données.
Il peut s' agir de champs d' une autre table.

"INSERT INTO Utilisateurs (Nom,Prenom,email) " & _  
"SELECT '" & x & "' AS Expr1, '" & y & "' AS Expr2, " & _
z & " AS Expr3;"


ou alors
"INSERT INTO Utilisateurs ( Nom, Prenom ) " & _  
"SELECT maTable.Nom, maTable.Prenom FROM maTable;"


Tu vois j' ai mis les espaces dans le 2° exemple.
Comme quoi les habitudes ont la vie dur !
Et on ne sait pas trop souvent d' ou elles nous viennent
ni pourquoi on y tient.



[] Ce qui va sans dire. va mieux en le disant.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
13 juin 2012 à 18:03
Et même si les variabls sont considérées comme externes à la base cela reviendrais à écrire:

INSERT INTO Utilisateurs (Nom, Prenom, enable)  " & _
"Values ('" & x & "','" & y & "', 1");


c' est pas très "réjouissant" non plus

[] Ce qui va sans dire. va mieux en le disant.
0
julieneni Messages postés 4 Date d'inscription vendredi 8 juin 2012 Statut Membre Dernière intervention 13 juin 2012
13 juin 2012 à 18:28
Si jamais il est possible d'éditer le titre en mettant "résolu"

merci
0
Rejoignez-nous