FireDAC.Comp.DataSet.TFDDataSet.Lookup
Delphi
function Lookup(const AKeyFields: string; const AKeyValues: Variant;
const AResultFields: string): Variant; override;
C++
virtual System::Variant __fastcall Lookup(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, const System::UnicodeString AResultFields);
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
function | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
Description
Recherche dans l'ensemble de données un enregistrement avec les valeurs de champs clés spécifiées et renvoie les valeurs de champ obtenues.
Utilisez Lookup pour rechercher dans l'ensemble de données un enregistrement avec les valeurs de champs clés spécifiées et renvoyer les valeurs de champs obtenues sans modifier la position en cours dans l'ensemble de données.
AKeyFields
est une liste de noms de champs séparés par des points-virgules dans laquelle effectuer la recherche. AKeyValues
est un variant contenant les valeurs à mettre en correspondance avec les champs clés. Si AKeyFields
contient un seul nom de champ, AKeyValues
est une valeur simple. Si AKeyFields
contient plusieurs noms de champs, AKeyValues
est un tableau de variants dans lequel les éléments correspondent aux champs clés. AResultFields
est une liste de noms de champs séparés par des points-virgules dont les valeurs sont renvoyées. Si l'enregistrement est trouvé, Lookup renvoie un tableau de variants contenant les valeurs de champs spécifiées dans AResultFields
. Sinon, elle renvoie nil.
Pour optimiser la recherche d'enregistrements, une application peut configurer un index client. Cet index sera utilisé par Lookup si les conditions suivantes sont satisfaites :
- La liste des champs de l'index a comme préfixe les champs
AKeyFields
. - L'index est construit sans l'option
soNoCase
. - L'index est actif et en cours.
Exemple
procedure TForm1.Button1Click(Sender: TObject); var V: Variant; C: Integer; A: String; begin V := FDQuery1.Lookup('Company;State', VarArrayOf(['Blue Sports', 'OR']), 'CustNo;Addr1'); if not VarIsNull(V) then begin C := V[0]; A := V[1]; ShowMessage(IntToStr(C) + #13#10 + A); end else ShowMessage('The record is not found !'); end;