Bde.DBTables.TBDEDataSet.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 | Bde.DBTables.pas Bde.DBTables.hpp |
Bde.DBTables | TBDEDataSet |
説明
指定されたレコードをデータセットから検索し、そのレコードをカレント レコードにします。
Locate を呼び出すと、指定されたレコードをデータセットから検索し、そこにカーソルを配置します。
KeyFields は、検索するフィールド名をセミコロンで区切ったリストの文字列です。
KeyValues は、キー フィールドに一致するものがあった値を格納するバリアント配列です。KeyFields が、フィールド 1 つのリストの場合、KeyValues は、目的のレコード上にあるそのフィールドの値を示します。検索値を複数指定した場合、バリアント配列が KeyValues として渡すか、VarArrayOf ルーチンを使用してその場でバリアント配列を構築します。例:
with CustTable do
Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);
TLocateOptions Opts;
Opts.Clear();
Opts << loPartialKey;
Variant locvalues[2];
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("P");
CustTable->Locate("Company;Contact", VarArrayOf(locvalues, 1), Opts);
Options は、文字列フィールドを検索する際に、さらに検索許容度を指定する、オプションのセットです。Options に loCaseInsensitive 設定がある場合、Locate はフィールドの照合時に大文字小文字を区別しません。Options に loPartialKey 設定がある場合、Locate は KeyValues 内の文字列の部分照合を行うことができます。Options が空のセットの場合、または KeyFields プロパティに文字列フィールドが含まれていない場合、Options は無視されます。
Locate は、一致するレコードを見つけた場合、true を返し、レコードをカレント レコードにします。そうでなければ、Locate は false を返します。
Locate では、できるだけ高速の方法を用いて、一致するレコードを特定します。 KeyFields 内の検索フィールドがインデックス付きであり、そのインデックスが指定された検索オプションと互換性がある場合、Locate はそのインデックスを使用します。そうでなければ、Locate は、検索するためにフィルタを作成します。