yassine1970
Messages postés1Date d'inscriptiondimanche 1 janvier 2012StatutMembreDernière intervention 6 janvier 2012
-
6 janv. 2012 à 17:02
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 2024
-
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
pierrotk10d
Messages postés110Date d'inscriptionmardi 13 novembre 2007StatutMembreDernière intervention 2 février 20243 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