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

nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 17 févr. 2006 à 12:00 - Dernière réponse : nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention
- 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
flor003 119 Messages postés dimanche 28 septembre 2003Date d'inscription 19 juin 2007 Dernière intervention - 17 févr. 2006 à 15:18
3
Merci
salut!

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

faire accepter
a+

Merci flor003 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de flor003
Meilleure réponse
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 22 févr. 2006 à 23:19
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));

Merci walid2876 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de walid2876
manytime 23 Messages postés mercredi 18 janvier 2006Date d'inscription 2 avril 2008 Dernière intervention - 17 févr. 2006 à 15:17
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
nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 17 févr. 2006 à 15:23
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
flor003 119 Messages postés dimanche 28 septembre 2003Date d'inscription 19 juin 2007 Dernière intervention - 17 févr. 2006 à 15:37
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
nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 17 févr. 2006 à 16:35
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
flor003 119 Messages postés dimanche 28 septembre 2003Date d'inscription 19 juin 2007 Dernière intervention - 17 févr. 2006 à 16:57
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
nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 17 févr. 2006 à 17:05
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
flor003 119 Messages postés dimanche 28 septembre 2003Date d'inscription 19 juin 2007 Dernière intervention - 18 févr. 2006 à 00:52
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
nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 18 févr. 2006 à 07:17
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
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 20 févr. 2006 à 22:29
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
flor003 119 Messages postés dimanche 28 septembre 2003Date d'inscription 19 juin 2007 Dernière intervention - 21 févr. 2006 à 10:55
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
nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 21 févr. 2006 à 13:44
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
flor003 119 Messages postés dimanche 28 septembre 2003Date d'inscription 19 juin 2007 Dernière intervention - 21 févr. 2006 à 14:18
0
Merci
lol t'as failli refaire une boulette mais tu t'es bien rattrapé.

mdr

a++
Commenter la réponse de flor003
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 22 févr. 2006 à 23:14
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
walid2876 49 Messages postés mardi 26 avril 2005Date d'inscription 31 août 2008 Dernière intervention - 22 févr. 2006 à 23:27
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
nou366 92 Messages postés samedi 21 janvier 2006Date d'inscription 10 octobre 2010 Dernière intervention - 23 févr. 2006 à 17:29
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.