Bde.DBTables.TTable.FindKey
Delphi
function FindKey(const KeyValues: array of const): Boolean;
C++
bool __fastcall FindKey(const System::TVarRec *KeyValues, const int KeyValues_High);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
function | public | Bde.DBTables.pas Bde.DBTables.hpp |
Bde.DBTables | TTable |
説明
指定されたフィールド値を持つレコードを検索します。
FindKey メソッドを呼び出すと、データセット内の特定のレコードを検索できます。KeyValues パラメータには、フィールド値をコンマで区切った配列(キーと呼ばれます)が格納されています。キー内の各値は、リテラル、変数、nil(Delphi の場合)、NULL(C++ の場合)のいずれかです。KeyValues で渡された値の数が検索に使用されるインデックスの列の数より少ない場合、足りない値は null と見なされます。KeyValues_Hig パラメータは、KeyValues に含まれている最後の値のインデックス(渡された値の総数よりも 1 少ない値)を示します。次の例では、FindKey メソッドを使用して、インデックス フィールドが "Princess Island SCUBA" という値になっているテーブル行を検索しています。
Table1.FindKey(['Princess Island SCUBA']);
TVarRec vr = ("Princess Island SCUBA");
Table1->FindKey(&vr, 0);
メモ: C++ コードでは、TVarRec(上記)か ARRAYOFCONST 構文のどちらかを使って、FindKey に検索値を渡すことができます。次の例では、上記の例と同じ検索を実行していますが、ARRAYOFCONST を使用しています。
Table1->FindKey(ARRAYOFCONST(("Princess Island SCUBA")));
Paradox テーブルと dBASE テーブルの場合、キーは必ずインデックスでなければならず、それは IndexName プロパティで指定することができます。IndexName が未指定の場合、FindKey ではテーブルの一次インデックスを使用します。なお、FindKey は dBASE の式インデックスでは機能しません。代わりに GotoKey メソッドまたは GotoNearest メソッドを使用します。
SQL テーブルの場合、キーは、IndexName プロパティで指定したインデックスに一致するか、IndexFieldNames プロパティに格納されているフィールド名リストに一致します。
検索に成功した場合、FindKey では、一致したレコードにカーソルを置き、true を返します。失敗した場合は、カーソルは移動せず、FindKey は false を返します。