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);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
説明
データセットから、指定キー フィールドの値でレコードを検索し、結果フィールドの値を返します。
Lookup を使用して、データセットから、指定キー フィールドの値でレコードを検索し、結果フィールドの値を返します。このときデータセットの現在の位置は変わりません。
AKeyFields
は、検索対象のフィールド名をセミコロンで区切ったリストです。AKeyValues
は Variant で、各キー フィールドで検索する値が含まれます。AKeyFields
がただ 1 つのフィールド名である場合、AKeyValues
は単一の値です。AKeyFields
に複数のフィールド名が含まれている場合、AKeyValues
はバリアント配列で、その各要素がキー フィールドに対応します。AResultFields
は、値が返されるフィールド名をセミコロンで区切ったリストです。レコードが見つかった場合は、Lookup は、バリアント配列を返します。この配列には、AResultFields
で指定した各フィールドからの値が含まれます。見つからない場合は nil を返します。
レコード検索を最適化するために、アプリケーションでクライアント インデックスをセットアップできます。インデックスが Lookup で使用されるのは、次の条件が満たされる場合です。
- インデックス フィールドのリストの先頭に、
AKeyFields
の各フィールドが含まれること。 - インデックスが、
soNoCase
オプションなしで作成されていること。 - インデックスはアクティブで、現在のインデックスであること。
例
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;