適用対象: Windows |Windows Server
インデックス内のレコードの検索
検索キーは、1 つのエントリまたはインデックス内の一連のエントリを検索するために作成されます。 検索キーは、インデックス内のキー列に対してのみ構築でき、1 つ以上の列値を含めることができます。 検索キーは、 JetMakeKey への 1 回の呼び出しまたは一連の呼び出しで構築され、JET_bitRetrieveCopyを使用して JetRetrieveKey を 使用して取得できます。 検索キーを構築した後、インデックス内のレコードにカーソルを移動するために使用できます。
テーブル内のレコードを検索する方法は 3 つあります。
1 つのインデックス エントリを検索します。 これを行うには、 JetMakeKey を使用して検索キーを作成し、 JetSeek でそのレコードに移動します。
レコードごとのインデックスを検索します。 JetMove を呼び出すことで、レコードを一度に 1 つのレコードを走査できます。 カーソルは、JetMove の cRow パラメーターにJET_MoveFirstを指定することで、インデックス内の最初のレコードに移動できます。 同じ方法で、カーソルを前方、後方、またはインデックスの最後のエントリに移動できます。
レコードのセットを検索します。 これを行うには、検索するインデックス エントリの範囲を設定してから、レコードを順番に移動します。 詳細については、このトピック の「レコードのセットを検索 する」セクションを参照してください。
レコードのセットを検索する
次の図は、 JetSeek と JetSetIndexRange の呼び出しによって定義されたインデックス エントリの範囲を移動するカーソルを示しています。
インデックス内の一連のレコードを検索するには、次の手順に従います。
インデックス内のレコードのセットを検索するには
JetMakeKey で検索するレコードのセット内の最初のレコードの検索キーを作成します。
JetSeek を使用して、検索キーに示されているレコードにカーソルを移動します。
JetMakeKey を使用して、範囲内の最後のインデックス エントリに対して別の検索キーを作成します。
手順 3 で作成したキーを使用して、 JetSetIndexRange でインデックス範囲を設定します。
次の図に示すように、 JetMove を呼び出して、インデックス範囲内の各レコードを順番に移動します。
この図のカーソルは、 JetSetIndexRange の呼び出しで設定されたインデックスの範囲を移動するだけです。 アプリケーションがインデックス範囲を超えてカーソルを移動しようとすると、ESE は JetMove の呼び出しからJet_errNoCurrentRecordエラーを返します。 次のレコードまたは前のレコードに移動する以外に、このカーソルを持つナビゲーションの種類は、インデックス範囲を取り消します。 詳細については 、「JetSetIndexRange 」を参照してください。
JetMakeKey の pvData パラメーターに入力するデータの種類は、列に指定されたデータとプロパティの型と一致する必要があります。 たとえば、列型JET_coltypTextの pvData パラメーターで "Ben Miller" を指定して JetMakeKey を呼び出すことは、有効なデータ型の一致です。 インデックス内の "Ben Miller" と "Max Stevens" という名前の間で検索する検索キーを作成する場合は、 JetSeek を呼び出して、"Ben Miller" という名前のレコードにカーソルを移動します。 JetMakeKey をもう一度呼び出し、"Max Stevens" という名前を含む文字列へのポインターを指定します。 インデックス範囲は、 JetSetIndexRange の呼び出しで"Ben Miller" と "Max Stevens" という名前の間を移動するカーソルを制限するように設定されています。