FireDAC.Comp.DataSet.TFDDataSet.Locate
Delphi
function Locate(const AKeyFields: string; const AKeyValues: Variant; AOptions: TLocateOptions = []): Boolean; override;
C++
virtual bool __fastcall Locate(const System::UnicodeString AKeyFields, const System::Variant &AKeyValues, Data::Db::TLocateOptions AOptions = Data::Db::TLocateOptions() );
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | FireDAC.Comp.DataSet.pas FireDAC.Comp.DataSet.hpp |
FireDAC.Comp.DataSet | TFDDataSet |
説明
指定されたフィールド値を持つレコードをデータセットで検索して、それを現在のレコードにします。
Locate を使用すると、指定されたフィールド値を持つレコードをデータセットで検索して、見つかった場合にはそれを現在のレコードにすることができます。
AKeyFields
は、検索条件となるフィールド名をセミコロンで区切ったリストです。
AKeyValues
は、これらのキー フィールドの照合値が格納されている Variant です。AKeyFields
がただ 1 つのフィールド名である場合、AKeyValues
は単一の値です。AKeyFields
に複数のフィールド名が含まれている場合、AKeyValues
はバリアント配列で、その各要素がキー フィールドに対応します。
AOptions
は文字列フィールドの検索モードの集合です。AOptions
に loCaseInsensitive
が含まれている場合、Locate では、フィールドの照合時に大文字/小文字を区別しません。AOptions
に loPartialKey
が含まれている場合、AKeyValues
パラメータには部分文字列を格納できます。
一致するレコードが見つかった場合、そのレコードが現在のレコードになり、Locate は True を返します。
レコードの検索を最適化するために、アプリケーションでは、クライアント インデックスをセットアップできます。このインデックスが Locate で使用されるのは、次の条件が満たされる場合です。
- インデックス フィールド リストの先頭に、
AKeyFields
の各フィールドが含まれている。 soNoCase
オプションを指定してインデックスが作成され、AOptions
にloCaseInsensitive
が含まれている。あるいは、soNoCase
を指定せずにインデックスが作成され、AOptions
にloCaseInsensitive
が含まれていない。- インデックスがアクティブで、現在のインデックスである。
例
CustTable.IndexFieldNames := 'ID';
if CustTable.Locate('ID', 1001, []) then
CustTable.Delete
else
ShowMessage('The customer with ID=1001 is not found');