FireDAC.Comp.Client.TFDTable.LookupEx
Delphi
function LookupEx(const AExpression: String; const AResultFields: String;
AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Variant; override;
function LookupEx(const AKeyFields: String; const AKeyValues: Variant;
const AResultFields: String; AOptions: TFDDataSetLocateOptions = [];
ApRecordIndex: PInteger = nil): Variant; override;
C++
virtual System::Variant __fastcall LookupEx(const System::UnicodeString AExpression, const System::UnicodeString AResultFields, Firedac::Comp::Dataset::TFDDataSetLocateOptions AOptions = Firedac::Comp::Dataset::TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
virtual System::Variant __fastcall LookupEx(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, const System::UnicodeString AResultFields, Firedac::Comp::Dataset::TFDDataSetLocateOptions AOptions = Firedac::Comp::Dataset::TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | FireDAC.Comp.Client.pas FireDAC.Comp.Client.hpp |
FireDAC.Comp.Client | TFDTable |
説明
データセットから、指定キー フィールドの値の集合、または述語式でレコードを検索し、結果フィールドの値を返します。
FireDAC.Comp.Client.TFDTable.LookupEx は FireDAC.Comp.DataSet.TFDDataSet.LookupEx を継承しています。以下の内容はすべて FireDAC.Comp.DataSet.TFDDataSet.LookupEx を参照しています。
データセットから、指定キー フィールドの値の集合、または述語式でレコードを検索し、結果フィールドの値を返します。
このメソッドは、次のようにオーバーロード(多重定義)されています。
- 1 番目の LookupEx オーバーロード メソッドを使うと、データセットから指定キー フィールドの値でレコードを検索します。
AKeyFields
は検索対象のフィールド名をセミコロンで区切ったリストです。AKeyValues
は Variant で、各キー フィールドで検索する値が含まれます。AKeyFields
がただ 1 つのフィールド名である場合、AKeyValues
は単一の値です。AKeyFields
に複数のフィールド名が含まれている場合、AKeyValues
はバリアント配列で、その各要素がキー フィールドに対応します。 - 2 番目の LookupEx オーバーロード メソッドを使うと、指定した述語式で True と評価されるレコードをデータセットから検索します。
AExpression
は文字列で、検索対象の述語式が含まれます。この式には、集計関数(SUM
、COUNT
など)を含むことはできません。式は True または False で評価されるものだけです。FireDAC では式の拡張構文をサポートしています。
一致レコードが見つかった場合は、LookupEx は、バリアント配列を返します。この配列には、AResultFields
で指定した各フィールドからの値が含まれます。見つからない場合は nil を返します。ApRecordIndex
が指す変数は、見つかったレコードのインデックスを受け取ります(ApRecordIndex
が nil ではない場合)。
レコード検索を最適化するために、アプリケーションでクライアント インデックスをセットアップできます。インデックスが LookupEx で使用されるのは、次の条件が満たされる場合です。
- インデックス フィールドのリストの先頭に、
AKeyFields
の各フィールドが含まれること。 - インデックスが、
soNoCase
オプションなしで作成されていること。 - インデックスはアクティブで、現在のインデックスであること。
AOptions
は追加の検索モードを指定するオプションのセットです。次のオプションが用意されています。
オプション |
説明 |
---|---|
lxoCaseInsensitive
|
使用すると、LookupEx では、大文字と小文字を区別せずに、文字列値の一致を判断します。 |
|
使用すると、 |
|
使用すると、LookupEx は、データセットの現在のレコード直後から検索を開始します。使用しない場合は、データセットの先頭から検索を開始します。 |
|
使用すると、LookupEx は、逆方向にレコードを検索します。使用しない場合は、順方向に検索します。 |
|
使用すると、LookupEx は、次の処理を実行しません。
|
|
使用すると、FetchAll が呼び出されません。したがって、検索は既に取得されているレコードで実行されます。 |
例
procedure TForm1.Button1Click(Sender: TObject);
var
V: Variant;
C: Integer;
A: String;
begin
V := FDQuery1.LookupEx('Company = ''Blue Sports'' and State = ''OR''', 'CustNo;Addr1', [lxoCaseInsensitive]);
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;