Erreure de syntaxe pour un select avec edit

Résolu
Signaler
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010
-
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010
-
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
A voir également:

17 réponses

Messages postés
118
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

salut!

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

faire accepter
a+
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

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));
Messages postés
23
Date d'inscription
mercredi 18 janvier 2006
Statut
Membre
Dernière intervention
2 avril 2008

Salut
test =>
adoQuery1.Close;
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add( 'SELECT * FROM table1 WHERE Nom ='''+edit1.Text+'''' );
adoquery1.Open;
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010

Merci flor003 , ca marche bien...
j'essaie de cliquer sur reponse accepter mais ca marche pas ..
Merci à toi aussi manytime...
Messages postés
118
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

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.
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010

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
Messages postés
118
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

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++
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010

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
Messages postés
118
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

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+
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010

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++
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

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)+')';
Messages postés
118
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

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.
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010

Salut Walid, un grand merci je n'avais pas encore trouvé la réponse..
Merci à toi aussi f------ :);

a+, les gars
Messages postés
118
Date d'inscription
dimanche 28 septembre 2003
Statut
Membre
Dernière intervention
19 juin 2007

lol t'as failli refaire une boulette mais tu t'es bien rattrapé.

mdr

a++
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

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...
Messages postés
49
Date d'inscription
mardi 26 avril 2005
Statut
Membre
Dernière intervention
31 août 2008

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
Messages postés
92
Date d'inscription
samedi 21 janvier 2006
Statut
Membre
Dernière intervention
10 octobre 2010

merci, de la correction , mais j'avais fini par trouver.

a+