Utilisation de la méthode Lookup

De RAD Studio
Aller à : navigation, rechercher

Remonter à Recherche dans les ensembles de données


La méthode Lookup recherche la première ligne qui correspond au critère de recherche. Si elle trouve une ligne correspondante, elle force le recalcul de tous les champs calculés et de tous les champs de référence associés à l'ensemble de données, puis elle renvoie un ou plusieurs champs de la ligne correspondante. Lookup ne déplace pas le curseur sur cette ligne ; elle ne fait que renvoyer certaines de ses valeurs.

Dans sa forme la plus simple, vous transmettez à Lookup le nom du champ de recherche, une valeur de champ pour établir la correspondance et le champ ou les champs à renvoyer. Par exemple, le code suivant recherche le premier enregistrement de CustTable pour laquelle la valeur dans le champ Company est "Professional Divers, Ltd.", puis renvoie le nom de la société, le nom du contact commercial et son numéro de téléphone :

var
  LookupResults: Variant;
begin
  LookupResults := CustTable.Lookup('Company', 'Professional Divers, Ltd.',     'Company;Contact; Phone');
end;
Variant LookupResults = CustTable->Lookup("Company", "Professional Divers, Ltd",
    "Company;Contact;Phone");

Lookup renvoie les valeurs des champs spécifiés du premier enregistrement qu'elle trouve. Les valeurs sont renvoyées en tant que Variants. Si plusieurs valeurs ont été demandées, Lookup renvoie un tableau de Variants. S'il n'existe aucun enregistrement correspondant, Lookup renvoie un Variant Null.

Le vrai potentiel de Lookup se manifeste quand vous effectuez une recherche sur plusieurs colonnes et que vous spécifiez plusieurs valeurs à rechercher. Pour spécifier des chaînes contenant plusieurs colonnes ou des champs de résultats, vous devez séparer 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 :

var
  LookupResults: Variant;
begin
with CustTable do
  LookupResults := Lookup('Company; City', VarArrayOf(['Sight Diver', 'Christiansted']),    'Company; Addr1; Addr2; State; Zip');
end;
Variant LookupResults;
Variant locvalues[2];
Variant v;
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("Kato Paphos");
LookupResults = CustTable->Lookup("Company;City", VarArrayOf(locvalues, 1),
                  "Company;Addr1;Addr2;State;Zip");
// now put the results in a global stringlist (created elsewhere)
pFieldValues->Clear();
for (int i = 0; i < 5; i++) // Lookup call requested 5 fields
{
v = LookupResults.GetElement(i);
if (v.IsNull())
pFieldValues->Add("");
else
pFieldValues->Add(v);
}

Comme Locate, Lookup utilise la méthode de recherche la plus rapide pour trouver les correspondances d'enregistrements. Si les colonnes de la recherche sont indexées, Lookup utilise l'index.

Voir aussi