Erreure de syntaxe pour un select avec edit

Résolu
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010 - 17 févr. 2006 à 12:00
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010 - 23 févr. 2006 à 17:29
Bonjour

J'essaie de faire un query en passant une valeur d'un edit
mais , il me dit "erreur de syntaxe, opérateur non présent"
mon code :
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom ='+edit1.Text );


adoquery1.Open;

je vois pas ou est l'erreur?

merci pour votre réponse

17 réponses

flor003 Messages postés 118 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 19 juin 2007
17 févr. 2006 à 15:18
salut!

adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom ='+quotedStr(edit1.Text)+' )';

faire accepter
a+
3
walid2876 Messages postés 49 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 31 août 2008
22 févr. 2006 à 23:19
arrette pardon ....
je te suit dans l'erreur pourquoi tu met ça : +')'
enleve les '' qui est on dernier.
voici comment les ecris

adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+IntToStr(N));
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+edit2.Text);
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+quotedstr(Datetimetostr(Datefield));
3
manytime Messages postés 23 Date d'inscription mercredi 18 janvier 2006 Statut Membre Dernière intervention 2 avril 2008
17 févr. 2006 à 15:17
Salut
test =>
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom ='''+edit1.Text+'''' );
adoquery1.Open;
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
17 févr. 2006 à 15:23
Merci flor003 , ca marche bien...
j'essaie de cliquer sur reponse accepter mais ca marche pas ..
Merci à toi aussi manytime...
0

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

Posez votre question
flor003 Messages postés 118 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 19 juin 2007
17 févr. 2006 à 15:37
de rien ca ma fais plaisir.lol
par contre plize ne plus citer mon pseudo (il me fait honte). C con qu'on ne puisse pas changer.
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
17 févr. 2006 à 16:35
resalut , ok promis je ne citerai plus ton pseudo ...

J"ai une autre question , j'ai le même problème mais c'est un champ numérique . Comment il faut faire la conversion ??

adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom='+quotedstr(edit2.Text ));

Faut -il utiliser strtoint ? et comment ?
merci d'avance
0
flor003 Messages postés 118 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 19 juin 2007
17 févr. 2006 à 16:57
resalut!



quand tu inséres comme tu le fait ici, tout doit être en string.

Par contre tu peux assigner un autre type avec les paramètres.

Ca c juste pour l'info.

Tu te trompe ton transtypage doit être inttostr. Tu as inversé.

Ce qui donne :



adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom='+quotedstr(IntToStr(edit2.Text))+')';



a++
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
17 févr. 2006 à 17:05
Désolé, mais ca plante... il indique ca
[Error] Unit1.pas(59): There is no overloaded version of 'IntToStr' that can be called with these arguments
0
flor003 Messages postés 118 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 19 juin 2007
18 févr. 2006 à 00:52
rereresalut !

deja je dis une grosse boulette un edit est en string.

ensuite t'es sur que le champ "nom" c pas un string plutot.

Il est ou le numérique?

a+
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
18 févr. 2006 à 07:17
Salut,

désolé de l'erreur mais c'est bien un numérique

adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+quotedstr(IntToStr(edit2.Text))+')';

a++
0
walid2876 Messages postés 49 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 31 août 2008
20 févr. 2006 à 22:29
les champs chaine de carectere ,date ...on les met avec quoted ''''
mais champs numerique sans les ''''
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+IntToStr(edit2.Text)+')';
0
flor003 Messages postés 118 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 19 juin 2007
21 févr. 2006 à 10:55
ah oui tiens j'avais pas vu qu'il avait remis le quotedstr.

Pour info dans quotedstr il y a str pour string.

Effectivement le quotedstr convertit la chaîne en ansistring ( qui est un chaîne longue ).

L'avantage de ce type est que l'allocation mémoire est gérée automatiquement. Un autre avantage : si la

chaîne est vide l'allocation mémoire est nil.

Le seul petit problème est que lorsque la chaîne n'est pas nulle elle occupe 4 octets de memoire.

D'où la nécéssité de pas faire de requête trop longue.
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
21 févr. 2006 à 13:44
Salut Walid, un grand merci je n'avais pas encore trouvé la réponse..
Merci à toi aussi f------ :);

a+, les gars
0
flor003 Messages postés 118 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 19 juin 2007
21 févr. 2006 à 14:18
lol t'as failli refaire une boulette mais tu t'es bien rattrapé.

mdr

a++
0
walid2876 Messages postés 49 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 31 août 2008
22 févr. 2006 à 23:14
SQL est une suite de chaine de carectere. donc
pour un numerique
exemple:
Var N:Integer;
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num= '+IntToStr(N)+')';
si ce numerique lu a partir d'un edit :
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+edit2.Text+')';
pour un type chaine de carectere :
on le met entre "" (on utilisant le QuotedStr).
Pour un type Tdatetime:
Var DateField:TdateTime;
on transtype d'abord en string et lui ajoute des """;
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num ='+quotedstr(Datetimetostr(Datefield)+')';


Resumé:
On utilise toujours un transtypage vers une chaine de carectere pour le transmetre au moteur de base de donnée
Numerique -----> string
String------>quotedString
date---->string---->quotedstring...
0
walid2876 Messages postés 49 Date d'inscription mardi 26 avril 2005 Statut Membre Dernière intervention 31 août 2008
22 févr. 2006 à 23:27
Je demande pardon parfois on vois pas les petit erreur meme ds ma premier reponce j fais une erreur fatale
Inttostr(edit1.text) !!!!
et pour la deusieme j pas controller ça
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Num='+IntToStr(N)+')';
La property SQL est un Objet derivé de Tstrings (suite de chaines)
a chaque entrée on utilise la methode ADD qui reçoit comme parametre un string : SQL.ADD(Variable string);
je te conseille d'abord de construire ta chaine et aprés tu l'intoduise a la blace de la variable pour ne pas se trompé d'ecriture .

Je demande de me pardonner de cette erreur , et je te souhaite une bonne chance
0
nou366 Messages postés 92 Date d'inscription samedi 21 janvier 2006 Statut Membre Dernière intervention 10 octobre 2010
23 févr. 2006 à 17:29
merci, de la correction , mais j'avais fini par trouver.

a+
0