Erreure de syntaxe pour un select avec edit [Résolu]

Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
- - Dernière réponse : nou366
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
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
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
19 juin 2007
3
Merci
salut!

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

faire accepter
a+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de flor003
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Dernière intervention
31 août 2008
3
Merci
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));

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 91 internautes nous ont dit merci ce mois-ci

Commenter la réponse de walid2876
Messages postés
23
Date d'inscription
mercredi 18 janvier 2006
Dernière intervention
2 avril 2008
0
Merci
Salut
test =>
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom ='''+edit1.Text+'''' );
adoquery1.Open;
Commenter la réponse de manytime
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
0
Merci
Merci flor003 , ca marche bien...
j'essaie de cliquer sur reponse accepter mais ca marche pas ..
Merci à toi aussi manytime...
Commenter la réponse de nou366
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
19 juin 2007
0
Merci
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.
Commenter la réponse de flor003
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
0
Merci
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
Commenter la réponse de nou366
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
19 juin 2007
0
Merci
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++
Commenter la réponse de flor003
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
0
Merci
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
Commenter la réponse de nou366
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
19 juin 2007
0
Merci
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+
Commenter la réponse de flor003
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
0
Merci
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++
Commenter la réponse de nou366
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Dernière intervention
31 août 2008
0
Merci
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)+')';
Commenter la réponse de walid2876
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
19 juin 2007
0
Merci
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.
Commenter la réponse de flor003
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
0
Merci
Salut Walid, un grand merci je n'avais pas encore trouvé la réponse..
Merci à toi aussi f------ :);

a+, les gars
Commenter la réponse de nou366
Messages postés
119
Date d'inscription
dimanche 28 septembre 2003
Dernière intervention
19 juin 2007
0
Merci
lol t'as failli refaire une boulette mais tu t'es bien rattrapé.

mdr

a++
Commenter la réponse de flor003
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Dernière intervention
31 août 2008
0
Merci
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...
Commenter la réponse de walid2876
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Dernière intervention
31 août 2008
0
Merci
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
Commenter la réponse de walid2876
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Dernière intervention
10 octobre 2010
0
Merci
merci, de la correction , mais j'avais fini par trouver.

a+
Commenter la réponse de nou366

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.