Gambas France BETA


Pas de compte ? Incription

Requete : message "Erreur de syntaxe..."

1
AuteurMessages
Ylmith#1 Posté le 19/12/2010 à 15:05:00
Bonjour,
profondément agacé par les pitreries de Bill concernant les versions Express de VB qui se succèdent sans
être compatibles et qu'il devient rapidement impossible de télécharger j'ai pris la résolution, concernant
les développements que j'effectue "à titre privé", de ne plus développer que sous Linux...
(Dans mon travail j'utilise "obligatoirement" et principalement Access 2003, qui est, il faut le reconnaître,
extrèmement puissant une fois qu'on le connaît suffisamment, mais ça fait plus de 4 ans que je travaille avec,
et qui correspond très bien à l'utilisation "reporting" dont j'ai besoin...).

Ayant découvert Gambas au hasard d'une page Internet je viens de m'inscrire sur le site, après avoir essayé de
développer l'élément classique de toute application, à savoir le form de connection.
J'ai repris scrupuleusement ce tuto :
http://gambasdoc.org/help/howto/database?fr
pour essayer de me connecter sur une base MySQL mais, à la compil je reçois systématiquement le message
"Erreur de syntaxe...".
Pourtant la requête est on ne peut plus "classique" :
1
$Query = “SELECT initiales, motdepasse FROM t_users WHERE motdepasse = '" & ZT_Password.Text & "'"

quelqu'un aurait-il une idée? :shock:
Prokopy#2 Posté le 19/12/2010 à 15:34:00
Kinder PinguiSalut et bienvenue à toi Ylmith,

L'erreur de syntaxe ne provient pas de la requête SQL en elle-même mais de la chaîne de caractères : le premier guillemet n'est pas un guillemet droit simple " comme il faudrait mais un guillemet typographique ouvrant “. C'est tout con mais quasi-invisible quand on utilise une petite police. ;)
Voilà la chaîne corrigée :

1
$Query = "SELECT initiales, motdepasse FROM t_users WHERE motdepasse = '" & ZT_Password.Text & "'"


Amuse-toi bien avec Gambas, :)
Prokopy
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Ylmith#3 Posté le 19/12/2010 à 15:39:00
Salut et bienvenue à toi Ylmith,

L'erreur de syntaxe ne provient pas de la requête SQL en elle-même mais de la chaîne de caractères : le premier guillemet n'est pas un guillemet droit simple " comme il faudrait mais un guillemet typographique ouvrant “. C'est tout con mais quasi-invisible quand on utilise une petite police. ;)
Voilà la chaîne corrigée :

1
$Query = "SELECT initiales, motdepasse FROM t_users WHERE motdepasse = '" & ZT_Password.Text & "'"


Amuse-toi bien avec Gambas, :)
Prokopy


Oups! Merci Prokopy mais comment "attrape-t-on" cette bestiole sur le clavier ou bien Code ASCCII?
Ylmith#4 Posté le 19/12/2010 à 15:49:00
Effectivement je n'ai visuellement aucune différence mais ...ca marche! Grazié Mille!
Ylmith#5 Posté le 19/12/2010 à 16:12:00
Ok, je viens de comprendre que ce sont les caractères du tuto qui n'étaient pas bons...Il faut juste que je les remplace
par les bons caractères de mon clavier... :rabbit:
On va y arriver... :drunken:
Prokopy#6 Posté le 19/12/2010 à 18:06:00
Kinder Pingui
comment "attrape-t-on" cette bestiole sur le clavier ou bien Code ASCCII?


Tu viens de le faire.
Il s'agit tout simplement de la touche "guillemet", en-dessous du 3 (pour le clavier français). ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
jlouis#7 Posté le 21/12/2010 à 10:45:00
Bonjour à tous,

Pour la lisibilité du code je trouve plus simple d'utiliser chr(34) comme dans l'exemple ci-dessous...

1
sql = "SELECT Nom FROM SousCat WHERE RefCat=" & Chr(34) & ListBox1.Caption & Chr(34) & " ORDER BY Nom"


Mais à chacun de choisir évidemment.
Prokopy#8 Posté le 21/12/2010 à 16:32:00
Kinder PinguiOu alors on peut utiliser la fonction DB.Quote(), ce qui est encore plus lisible :

1
sql = DB.Quote("SELECT Nom FROM SousCat WHERE RefCat=&1 ORDER BY Nom", ListBox1.Caption)


Elle fonctionne comme Subst(), sauf qu'en plus elle ajoute les guillemets et quote la chaîne pour éviter toute injection. :)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
1