Requête SQL Delphi??

Mani -  
 kass -
Bonjour à tous,

Je débute avec Delphi6 et j'ai une requête qui affiche les informations sur un étudiant selon son code qui doit être saisie dans un composant edit. je ne sais pas comment mettre le condition qui permet de rechercher un étudiant selon son code
J'ai essayé le code suivant dans la propriété sql de mon query:

select code, nom, prenom
from etudiant
where code like ("edit1.text")

Le message d'erreur est type mismatch in expression

Merci beaucoup
A voir également:

8 réponses

Starnouf
 
Tu nous donne tres peu d'informations sur comment ton projet est fait...
Je suppose que tu as deja un ADOquery avec comme requete SQL : Select * from etudiant
En supposant que ton ADOQuery s'appelle ADOQuery1, dans la procédure de ton tbutton :

begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add ('Select * from etudiant where code like '+QuotedStr(Edit1.Text));
ADOQuery1.Open;
end;
1
Mani
 
Salut,
Merci je vais essayer ton code mais comment t'as su que je travaille avec les composants ADO, c'est vrai que le SGBD que j'utilise est ACCESS!!!

Alors d'après ce que j'ai compris je dois mettre quelque code SQL dans la propriété SQL de ADOQuery1 pour l'activer puis la procédure du bouton va effacer ce code pour exécuter la recherche c'est ça?

j'ai d'autres questions stp:
ça sert à quoi "+QuotedStr"
Si le code est de type numérique je mettrai = à la place de like?
et comment sera la procédure si je veux faire la recherche en fonction du nom et du prénom?

Merci beaucoup
0
Starnouf
 
Salut

le +QuoteStr c'est pour que ton programme comprenne qu'il doit lire la chaîne (String--> le St) qui est entre guillemets (de l'anglais Quotation mark).

La requête Select * from etudiant se trouve effectivement dans les propriétés SQL de ton ADOQuery1.

le ADOQuery1.SQL.Clear va réinitialiser la requête puis lancera sa recherche sur ce que tu lui demande (en l'occurence pour toi, il cherchera l'etudiant dont tu as mis le numero dans le TEdit).
Ca n'ajoutera rien, ni ne supprimera ce que tu as mis dans la propriété SQL de ton ADOQuery.

N'hesite pas regarder sur le net, il y a beaucoup de sites qui traitent des requêtes paramétrées.
1
Mani
 
Bonjour,
Merci beaucoup pour tes réponses
En fait j'ai pas trouvé grand chose sur les requêtes paramétrées vu que je l'ai connais pas j'essaye de chercher des tuto... mais bon j'ai fait quand même quelques chose, en suivant ce lien http://www.laboiteaprog.com/article-34-1-delphi_requete_parametree mais mon code ne marche pas hélas
alors j'ai mis mais composant ADOConnexion1, ADOQuery1 puis dans la propriété SQL de ce dernier composant j'ai mis ce code
select * from etudiant where code = :code

quand je mis la propriété active à true j'ai le message d'erreur:
Objet parameter défini de manière incorrect des informations incohérentes ou incomplète ont été fournies

puis dans la procédure Button1Click j'ai mis ce code:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from etudiant where code = :code');
ADOQuery1.ParamByName('code').AsString := Edit1.Text;
ADOQuery1.ExecQuery;

j'ai les messages d'erreur: undeclared identifier ParamByName
undeclared identifier ExecQuery

Merciiiiiii énormément
0
william7007 Messages postés 335 Date d'inscription   Statut Membre Dernière intervention   46
 
Slt
je pense moi qu'il te manque un tout petit truc '+' et un espace avant le AND et après le LIKE

ADOQuery1.SQL.Add('select * from etudiant where nom like'+QuotedStr(edit2.Text) +
' and prénom like'+QuotedStr(edit3.Text) );
1
Mani
 
UP SVP
0

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

Posez votre question
Starnouf
 
Bonjour,

Non, dans les propriétés SQL de ton ADOQuery tu laisse select * from etudiant (si ta table s'appelle bien etudiant).

Dans la procedure de ton Button1Click, supprime ta ligne ADOQuery1.Close, car tu demande a fermer ta connection... Tu ne peut donc pas lancer de recherche sur une base dont tu n'as plus l'accès !

Sinon le code que je t'avais donné ne devrait pas poser de problemes.

Bonne prog ;)
0
Mani
 
Salut,
Mais oui bien sûr ton code marche très bien en fait j'essayais de le faire en requête paramétrée mais bon, du moment que ça marche pas j'utiliserai toujours ton code qui est plus facile!!!
Une dernière STP je sais je t'ai trop embêté.... vraiment désolé
Pour faire ma recherche en fonction du nom et du prénom j'ai fais comme ça:
ADOQuery1.SQL.Add('select * from etudiant where nom like'+QuotedStr(edit2.Text)
 'and prénom like'+QuotedStr(edit3.Text) );

le message d'erreur est : Missing operator or semicolon
Merciii beaucoup
0
Starnouf
 
oui, il ne faut pas oublier le +
Sinion pour l'espace je ne pense pas qu'il soit obligatoire, mais ca fait plus aéré pour la lisibilité ;)
0
Mani
 
Milles mercis Starnouf et William

Bonne soirée
0
123viva l'algerie
 
select * from etudiant where code = :code


puis dans la procédure Button1Click vous devez mettre ça

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from etudiant where code = :code');
ADOQuery1.ParamByName(':code').AsString := Edit1.Text;
ADOQuery1.ExecQuery;


l'asstuce c'est de ne pas oublier d'ajouter les deux point avant le nom de parametre;
dans: ADOQuery1.ParamByName(':code').AsString := Edit1.Text;
0
aissa
 
select code, nom, prenom
from etudiant
where code like ("edit1.text")
0
kass
 
Bonjour, j'ai eu un problème similaire,
Pendant le mode création, il ne faut pas oublier de définir le DataType qui est souvent ftUnknow Merci
0