Utilisation de la méthode Locate

De RAD Studio
Aller à : navigation, rechercher

Remonter à Recherche dans les ensembles de données


Locate déplace le curseur sur la première ligne correspondant au critère de recherche spécifié. Dans sa forme la plus simple, vous transmettez à Locate le nom de la colonne de recherche, une valeur de champ pour établir la correspondance et un indicateur d'option qui spécifie si la recherche doit tenir compte des différences majuscules/minuscules et si elle utilise les correspondances de clés partielles. (Correspondances dans lesquelles la chaîne de critère peut se limiter à un préfixe de la valeur de champ.) Par exemple, le code suivant déplace le curseur sur la première ligne de CustTable pour laquelle la valeur dans la colonne Company est "Professional Divers, Ltd." :

var
  LocateSuccess: Boolean;
  SearchOptions: TLocateOptions;
begin
  SearchOptions := [loPartialKey];
  LocateSuccess := CustTable.Locate('Company', 'Professional Divers, Ltd.', SearchOptions);
end;
TLocateOptions SearchOptions;
SearchOptions.Clear();
SearchOptions << loPartialKey;
bool LocateSuccess = CustTable->Locate("Company", "Professional Divers, Ltd.",

Si Locate trouve une correspondance, le premier enregistrement contenant cette correspondance devient l'enregistrement en cours. Locate renvoie True si une correspondance est trouvée, False dans le cas contraire. Si la recherche échoue, l'enregistrement en cours reste le même.

Le vrai potentiel de Locate se manifeste quand vous effectuez une recherche sur plusieurs colonnes et que vous spécifiez plusieurs valeurs recherchées. Celles-ci sont des Variants, et vous pouvez donc spécifier des types de données différents pour vos critères de recherche. Pour spécifier plusieurs colonnes dans une chaîne de recherche, séparez les éléments de la chaîne par des points-virgules.

Les valeurs recherchées étant des Variants, pour transmettre plusieurs valeurs, vous devez soit transmettre un type tableau de Variants comme argument (par exemple, les valeurs renvoyées par la méthode Lookup), soit construire le tableau de Variants à la volée en utilisant la fonction VarArrayOf. Le code suivant illustre une recherche sur plusieurs colonnes faisant intervenir de multiples valeurs de recherche et utilisant les correspondances de clés partielles :

with CustTable do
  Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver','P']), loPartialKey);
TLocateOptions Opts;
Opts.Clear();
Opts << loPartialKey;
Variant locvalues[2];
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("P");
CustTable->Locate("Company;Contact", VarArrayOf(locvalues, 1), Opts);

Locate utilise la méthode de recherche la plus rapide pour trouver les correspondances d'enregistrements. Si les colonnes de la recherche sont indexées et que l'index est compatible avec les options de recherche spécifiées, Locate utilise cet index.

Voir aussi