IBX.IBTable.TIBTable.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 | IBX.IBTable.pas IBX.IBTable.hpp |
IBX.IBTable | TIBTable |
説明
テーブルから指定されたレコードを検索して,そのレコードを現在のレコードにします。
Locate を呼び出すと,データセットから特定のレコードを検索し,そのレコードにカーソルを移動できます。
KeyFields は,検索する項目名のセミコロン区切りのリストが入った文字列です。
KeyValues は,キー項目内で一致する値を指定するバリアントです。KeyFields が単一の項目をリストする場合,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[3];
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("P");
locvalues[2] = Variant("408-431-1000");
CustTable->Locate("Company;Contact;Phone", VarArrayOf(locvalues, 2), Opts);
Options は,文字列項目を検索する際に追加の検索許容度をオプションで指定するセットです。Options に loCaseInsensitive 設定が入っている場合には,Locate は項目の照合時に大文字と小文字を区別しません。Options に loPartialKey 設定が入っている場合には,Locate は KeyValues 内の文字列の部分照合を行うことができます。Options が空セットの場合や,KeyFields が文字列項目を持たない場合には,Options は無視されます。
Locate は,一致するレコードを見つけると true を返し,それを現在のレコードにします。そうでない場合には,Locate は false を返します。
Locate は可能な限り速い方法を使って一致するレコードの位置を突き止めます。KeyFields の検索項目がインデックス付けされており,そのインデックスが指定された検索オプションと互換性がある場合,Locate はそのインデックスを使用します。それ以外の場合,Locate は検索のためにフィルタを作成します。