Bde.DBTables.TBDEDataSet.Lookup
Delphi
function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; override;
C++
virtual System::Variant __fastcall Lookup(const System::UnicodeString KeyFields, const System::Variant &KeyValues, const System::UnicodeString ResultFields);
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | Bde.DBTables.pas Bde.DBTables.hpp |
Bde.DBTables | TBDEDataSet |
Description
Récupère des valeurs de champs à partir d'un enregistrement correspondant à des valeurs de recherche spécifiées.
Appelez Lookup pour chercher l'enregistrement d'un ensemble de données dans lequel les champs spécifiés contiennent les valeurs indiquées et renvoient d'autres valeurs de champ à partir du champ trouvé. A l'inverse d'autres méthodes de recherche d'ensemble de données, Lookup effectue sa recherche sans déplacer le pointeur d'enregistrement de l'ensemble de données. Ceci est utile lors de la validation des données d'un enregistrement alors que celui-ci est encore en mode édition ou insertion.
KeyFields est une chaîne contenant les noms de champ ou les champs dans lesquels la recherche est effectuée. Si la recherche est basée sur plus d'un champ, KeyFields représente une liste délimitée par des points-virgules des noms de champ.
KeyValues est un tableau variant contenant les valeurs à trouver dans les champs indiqués dans KeyFields. Pour spécifier plusieurs valeurs de recherche, transmettez un tableau de variants KeyValues comme argument, ou construisez un tableau de variants à la volée en utilisant la routine VarArrayOf. Ces valeurs de recherche doivent être spécifiées dans l'ordre des champs correspondant à ces valeurs dans KeyFields. Par exemple, la première valeur est utilisée pour le premier champ dans KeyFields, la deuxième valeur pour le deuxième champ, etc.
ResultFields est une chaîne contenant les noms du ou des champ(s) qui renverront les valeurs. Si ces dernières doivent être renvoyées à partir de plusieurs champs, ResultFields représente une liste délimitée par des points-virgules des noms de champ.
Lookup renvoie un tableau de variants contenant les valeurs des champs spécifiés dans ResultFields.
Lookup utilise la méthode la plus rapide possible pour localiser les enregistrements correspondant. Si les champs de recherche dans KeyFields sont indexés, Lookup utilise l'index. Sinon, Lookup crée un filtre pour la recherche.
L'exemple ci-après utilise la méthode Lookup pour rechercher la table Paradox exemple Customer. La recherche est basée sur deux champs : Company et State. Elle est également basée sur les deux valeurs suivantes de ces deux champs : "Blue Sports" et "OR". Pour que la recherche réussisse, il faut qu'un enregistrement dont le champ Company contient la valeur "Blue Sports" ET le champ State contient "OR" existe. Si l'un des deux critères n'est pas rempli, la recherche échoue (un tel enregistrement existe vraiment dans cette table, la recherche réussit donc). Les valeurs des champs CustNo et Addr1 sont renvoyées par l'exécution de la méthode Lookup. Si la recherche échoue, la fonction VarType, appliquée au tableau de variants renvoyé, renvoie varNull.
procedure TForm1.Button1Click(Sender: TObject);
var
V: Variant;
C: Integer;
A: String;
begin
V := Table1.Lookup('Company;State',
VarArrayOf(['Blue Sports', 'OR']),
'CustNo;Addr1');
if not (VarType(V) in [varNull]) then begin
C := V[0];
A := V[1];
ShowMessage(IntToStr(C) + #10 + A);
end
else
ShowMessage('Search unsuccessful!');
end;
int C;
AnsiString A;
Variant V;
V = Table1->Lookup("Company;State",
VarArrayOf(OPENARRAY(Variant, ("Blue Sports","OR"))),
"CustNo;Addr1");
if !(VarType(V) == varNull)
{
C = V[0];
A = V[1];
ShowMessage(IntToStr(C) + #10 + A);
}
else
ShowMessage("Search unsuccessful!");