Bonjour, j'ai une base de données paradox7 et je voudrais savoir quels sont les étapes pour faire une recherche a l'aide d'un edit , j'ai vu pas mal de discussion mais j'ai pas bien compris comment faire
merci d'avance.![]()
Bonjour, j'ai une base de données paradox7 et je voudrais savoir quels sont les étapes pour faire une recherche a l'aide d'un edit , j'ai vu pas mal de discussion mais j'ai pas bien compris comment faire
merci d'avance.![]()
La question est loin d'être claire![]()
je pense que tu veux dire que tu veux faire une recherche dans une table paradox sur un colonne particulière dont la valeur serait fournie par un Edit
il y a au moins 5 possibilités et j'en oublie peut être
1) si cette colonne est une clé de la table et ne fournit qu'un seul enregistrement
ou encore FindNearest
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if Table1.FindKey([Edit1.text]) then // trouvé else // non trouvé
2) sinon mais toujours un singletonEnvoyé par Aide Delphi
ou encore Lookup
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if Table1.Locate('COLONNE',vararrayof([Edit1.text]),[]) // voir syntaxe exacte then // trouvé else // non trouvé
Si on peut obtenir plusieurs enregistrements
3) le filtre sur les propriétés de la table (a mon avis la plus mauvaise solution surtout lorsqu'il s'agit de date )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 table1.Filter:='COLONNE = '+QuotedStr(Edit1.text); table1.Filtered:=True; table1.Refresh;4) le 'Filtre' programmable si la colonne est une cléEnvoyé par Aide Delphi
Avec les tables Paradox ou dBASE, SetRange ne fonctionne que sur les champs indexés.5) et enfin la Query paramètrable
Code : Sélectionner tout - Visualiser dans une fenêtre à part table1.SetRange([edit1.text],[edit1.text]);
NOTE : Toujours préférer une Query paramètrable a une codée "en dur"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Query1.SQL.Text:='SELECT * FROM MATABLE WHERE COLONNE=:C'; Query1.ParamByName('C').asString:=Edit1.Text; Query1.Active:=True; .... if Query1.FieldByName('COLONNE').isNull then // non trouvé else ... Query1.Active:=False;
j'aurais pu écrire
et me passer de paramètre inconvénient ? esssayez avec un Float ou une date
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Query1.SQL.Text:='SELECT * FROM MATABLE WHERE COLONNE='+QuotedStr(Edit1.Text);
merci pour votre réponse je voudrais tenté le query, alors je doit mettre un query plus datasource et un dbgrid, c bien ca???
ma recherche consiste a trouve un ou plusieurs enregistrements dans une table le édit doit porter une condition, par exemple je veut chercher les étudiants d'une filière x que j'écrirais dans le édit, et le résultat sera une liste des étudiants qui étudie dans cette filière.
Alors ça sera :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 DataSource1.DataSet := myQuery; DBGrid1.DataSource := DataSource1; with myQuery do begin DatabaseName := 'Chemin de la base'; SQL.Text := 'SELECT * FROM TABLE WHERE FILIERE=:FILIERE'; ParamByName('FILIERE').AsString := edit1.Text; Open; end; //N.B : Si ton champs 'FILIERE' est numérique, il faudra mettre : ParamByName('FILIERE').AsString := StrToInt(edit1.Text);
Evidemment, ton query doit être rattaché à un DataSource qui, lui, doit être rattaché à une DBGrid comme précisé en haut.
Bon Dév.
j'arrive pas a avoir le résultat ,je crois que je m'embrouille avec les champs, un message s'affiche quand je clic sur le bouton de recherche 'nom du champs incorrect'![]()
ma table se compose de :
num-fil (numéro de filière)
type-fil (type de filière)
type-form (type de formation)
ma requête c'est d'écrire dans l'édit le type de formation pour avoir tout les filière du même type
merci .
Je ne suis pas sûr, mais je crois que le pbm vient des noms des champs.
Au lieu de num-fil, mets plutôt Num_Fil.
Evites le tiret de la touche 6 qui est pris comme le signe moins (-). Il vaut mieux utiliser le souligné (touche 8) pour séparer les parties d'un champs.
Essaies de faire ces modifs sinon envoies-moi ta procédure.
NB: Il faut lire un peu sur le SQL pour comprendre son utilisation. Il y a plein de tutos.
Bon dév.
Je vous remercie énormément , j'ai changé le tiré et ca fonctionne ..encore merci![]()
lorsqu'il s'agit de date simplemment tu index la colum Date et metre DataType (de la colum date):=ftDate tu ajout se code a la fin est le problem est resulut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Si on peut obtenir plusieurs enregistrements 3) le filtre sur les propriétés de la table (a mon avis la plus mauvaise solution surtout lorsqu'il s'agit de date )
donc le code va etre comme ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part table1.IndexName:='withdate';
apré l'execution de filtrage il execut l'indexage par date
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 table1.Filter:='Name = '+QuotedStr(Edit1.text); table1.Filtered:=True; table1.Refresh; table1.IndexName:='withdate';
testé
Partager