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é
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager