FireDAC.Comp.DataSet.TFDDataSet.LookupEx

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

function LookupEx(const AKeyFields: string; const AKeyValues: Variant;
const AResultFields: string; AOptions: TFDDataSetLocateOptions = [];
ApRecordIndex: PInteger = nil): Variant; overload; virtual;
function LookupEx(const AExpression, AResultFields: string;
AOptions: TFDDataSetLocateOptions = []; ApRecordIndex: PInteger = nil): Variant; overload; virtual;

C++

virtual System::Variant __fastcall LookupEx(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, const System::UnicodeString AResultFields, TFDDataSetLocateOptions AOptions = TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;
virtual System::Variant __fastcall LookupEx(const System::UnicodeString AExpression, const System::UnicodeString AResultFields, TFDDataSetLocateOptions AOptions = TFDDataSetLocateOptions() , System::PInteger ApRecordIndex = (System::PInteger)(0x0))/* overload */;

プロパティ

種類 可視性 ソース ユニット
function public
FireDAC.Comp.DataSet.pas
FireDAC.Comp.DataSet.hpp
FireDAC.Comp.DataSet TFDDataSet

説明

データセットから、指定キー フィールドの値の集合、または述語式でレコードを検索し、結果フィールドの値を返します。


このメソッドは、次のようにオーバーロード(多重定義)されています。

  • 1 番目の LookupEx オーバーロード メソッドを使うと、データセットから指定キー フィールドの値でレコードを検索します。AKeyFields は検索対象のフィールド名をセミコロンで区切ったリストです。AKeyValuesVariant で、各キー フィールドで検索する値が含まれます。AKeyFields がただ 1 つのフィールド名である場合、AKeyValues は単一の値です。AKeyFields に複数のフィールド名が含まれている場合、AKeyValues はバリアント配列で、その各要素がキー フィールドに対応します。
  • 2 番目の LookupEx オーバーロード メソッドを使うと、指定した述語式で True と評価されるレコードをデータセットから検索します。AExpression は文字列で、検索対象の述語式が含まれます。この式には、集計関数(SUMCOUNT など)を含むことはできません。式は True または False で評価されるものだけです。FireDAC では式の拡張構文をサポートしています。

一致レコードが見つかった場合は、LookupEx は、バリアント配列を返します。この配列には、AResultFields で指定した各フィールドからの値が含まれます。見つからない場合は nil を返します。ApRecordIndex が指す変数は、見つかったレコードのインデックスを受け取ります(ApRecordIndexnil ではない場合)。

レコード検索を最適化するために、アプリケーションでクライアント インデックスをセットアップできます。インデックスが LookupEx で使用されるのは、次の条件が満たされる場合です。

  • インデックス フィールドのリストの先頭に、AKeyFields の各フィールドが含まれること。
  • インデックスが、soNoCase オプションなしで作成されていること。
  • インデックスはアクティブで、現在のインデックスであること。

AOptions は追加の検索モードを指定するオプションのセットです。次のオプションが用意されています。

オプション

説明
lxoCaseInsensitive

使用すると、LookupEx では、大文字と小文字を区別せずに、文字列値の一致を判断します。

lxoPartialKey

使用すると、AKeyValues に、文字列を比較するため完全ではない文字列を指定できます。

lxoFromCurrent

使用すると、LookupEx は、データセットの現在のレコード直後から検索を開始します。使用しない場合は、データセットの先頭から検索を開始します。

lxoBackward

使用すると、LookupEx は、逆方向にレコードを検索します。使用しない場合は、順方向に検索します。

lxoCheckOnly

使用すると、LookupEx は、次の処理を実行しません。
  • 編集モードであった場合に、編集モードを終了すること。

lxoNoFetchAll

使用すると、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;

関連項目