Requête SQL Delphi??

Fermé
Mani - 22 févr. 2009 à 09:08
 kass - 19 mars 2016 à 00:20
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

8 réponses

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
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
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
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 dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
24 févr. 2009 à 19:49
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
UP SVP
0

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

Posez votre question
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
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
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
Milles mercis Starnouf et William

Bonne soirée
0
123viva l'algerie
22 avril 2010 à 20:31
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
select code, nom, prenom
from etudiant
where code like ("edit1.text")
0
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