Recherche mutli-critaires en delphi5

yassine1970 Messages postés 1 Date d'inscription dimanche 1 janvier 2012 Statut Membre Dernière intervention 6 janvier 2012 - 6 janv. 2012 à 17:02
pierrotk10d Messages postés 108 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 24 septembre 2022 - 10 janv. 2012 à 10:53
salut tout le monde;
j'ai une base de donnée(dbf)qui contient plus de 200 000 enregistrement, je voudrais:
1- Faire une recherche sur 02 champs et plus (nom,prenom,...)
2-Le code qui fait l'indexation sur plusieurs champs

3 réponses

pierrotk10d Messages postés 108 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 24 septembre 2022 3
6 janv. 2012 à 22:04
Bonjour,
Avec une table DBF il te faut obligatoirement créer un index secondaire sur les champs nom et prenom.
Ensuite la méthode LOCATE(Const KeyFields: string; const KeyValues: variant; Options: [TLocateOptions]): Boolean devrait faire l'affaire.
Pour la recherche sur les 2 champs il faut fournir les critères (KeyValues) dans un tableau de type Variant.
Les Options sont loCaseInsensitive, La case n'est pas prise en compte et
loPartialKey recherche sur une partie de l'argument passé
If not table1.Locate('Nom;Prenom',VarOfArray('Yassine','1970'), []) then
ShowMessage('Pas trouvé');
Avec SetKey et GotoKey ça marche aussi.
With Table1 do begin
Setkey;
FieldByName('Nom').AsString := nom;
FieldByName('prenom').AsString := prenom;
GotoKey;
end;
A voir aussi les méthodes LookUp et FindKey suivant ce que tu veux faire.
Ne pas oublier l'aide de Delhi Touche F1

pierrot
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 14
9 janv. 2012 à 16:03
Bonjour,

attention..

If not table1.Locate('Nom;Prenom',VarOfArray(['Yassine','1970']), []) then


cantador
0
pierrotk10d Messages postés 108 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 24 septembre 2022 3
10 janv. 2012 à 10:53
Bonjour,
Quand on donne une info encore faut il qu'elle soit exacte.merci d'avoir corrigé mon oubli de crochets.
pierrot
0
Rejoignez-nous