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