Datasnap.DBClient.TCustomClientDataSet.Locate
Delphi
function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; override;
C++
virtual bool __fastcall Locate(const System::UnicodeString KeyFields, const System::Variant &KeyValues, Data::Db::TLocateOptions Options);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | Datasnap.DBClient.pas Datasnap.DBClient.hpp |
Datasnap.DBClient | TCustomClientDataSet |
説明
指定したレコードのデータセットを検索し、そのレコードを現在のレコードにします。
Locate メソッドを呼び出すと、指定したレコードのデータセットを検索し、そのレコードにカーソルを移動できます。 KeyFields は、検索する項目名のセミコロンで区切られたリストが入った文字列です。
KeyValues は、キー項目内で一致する値を格納するバリアントです。KeyFields が 1 つの項目をリストしている場合、KeyValues はその項目の検索値を表します。 KeyFields が複数の項目をリストしている場合、バリアント配列を KeyValues パラメータとして渡します。Delphi では、VarArrayOf ルーチンを使用すると実行中にバリアント配列を作成できます。 以下に例を示します。
with CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '831-431-1000']), [loPartialKey]);
TLocateOptions Opts;
Opts.Clear();
Opts << loPartialKey;
Variant locvalues[3];
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("P");
locvalues[2] = Variant("831-431-1000");
CustTable->Locate("Company;Contact;Phone", VarArrayOf(locvalues, 2), Opts);
Options は、文字列項目を検索するときに、追加の検索許容度をオプションで指定するセットです。 Options に loCaseInsensitive が設定されている場合、Locate は項目の照合時に大文字と小文字を区別しません。 Options に loPartialKey が設定されている場合、KeyValues パラメータは項目値の部分文字列を指定できます。 (たとえば上記の例では、Contact 項目は Contact が「P」で始まるすべてのレコードと一致します。) Options が空セットの場合、または KeyFields が文字列項目ではない場合、Options は無視されます。
Locate は、一致するレコードを見つけると True を返し、それを現在のレコードにします。 見つからない場合、Locate は False を返します。