JetSetIndexRange 関数

適用対象: Windows |Windows Server

JetSetIndexRange 関数

JetSetIndexRange 関数は、JetMove を使用してカーソルが歩くことができるインデックス エントリのセットを、現在のインデックス エントリから開始し、そのカーソルの検索キーで指定された検索条件と指定されたバインドされた条件に一致するインデックス エントリで終わるインデックス エントリに一時的に制限します。 検索キーは、 JetMakeKey を使用して以前に構築されている必要があります。

    JET_ERR JET_API JetSetIndexRange(
      __in          JET_SESID sesid,
    __in          JET_TABLEID tableidSrc,
      __in          JET_GRBIT grbit
    );

パラメーター

sesid

この呼び出しに使用するセッション。

tableidSrc

この呼び出しに使用するカーソル。

grbit

この呼び出しに使用するオプションを含むビットのグループ。これには、次の 0 個以上が含まれます。

説明

JET_bitRangeInclusive

このオプションの有無は、インデックス範囲の境界条件を示します。 存在する場合、このオプションは、インデックス範囲の制限が包括的であることを示します。 存在しない場合、このオプションは、インデックス範囲の制限が排他的であることを示します。 インデックス範囲の制限が含まれている場合は、検索条件と完全に一致するインデックス エントリが範囲に含まれます。

JET_bitRangeInstantDuration

このオプションは、インデックス範囲が確立されるとすぐに削除するように要求します。 操作の他のすべての側面は変更されません。 これは、検索条件に一致するインデックス エントリの存在をテストする場合に役立ちます。

JET_bitRangeRemove

このオプションは、カーソル上の既存のインデックス範囲を取り消す必要があります。 インデックス範囲が取り消されると、 JetMove を使用してインデックス範囲の末尾を超えて移動できます。 インデックス範囲がまだ有効でない場合、 JetSetIndexRange はJET_errInvalidOperationで失敗します。

このオプションを指定すると、他のすべてのオプションは無視されます。

JET_bitRangeUpperLimit

このオプションを使用すると、カーソル内の検索キーは、インデックス範囲に一致するインデックスの末尾に最も近いインデックス エントリの検索条件を表します。 カーソルの現在位置とこのインデックス エントリの間にインデックス範囲が確立されるため、jetMove とJET_MoveNextまたは正のオフセットで JetMove を使用してインデックスを前方に移動すると、すべての一致が見つかります。

インデックスの先頭に最も近いインデックス エントリを検索するためのワイルドカード オプションを使用して JetMakeKey を使用して構築された検索キーでこのオプションを使用することは意味がありません。

このオプションを省略すると、カーソル内の検索キーは、インデックス範囲に一致するインデックスの先頭に最も近いインデックス エントリの検索条件を表します。 カーソルの現在位置とこのインデックス エントリの間にインデックス範囲が確立されるため、 JetMove を使用してインデックスを後方に移動し、JET_MovePreviousまたは負のオフセットを使用してすべての一致が見つかります。

インデックスの末尾に最も近いインデックス エントリを検索するためのワイルドカード オプションを使用して JetMakeKey を使用して構築された検索キーでこのオプションを省略することは意味がありません。

戻り値

この関数は、次のいずれかのリターン コードを使用して 、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張可能ストレージ エンジン エラー 」および「 エラー処理パラメーター」を参照してください。

リターン コード

説明

JET_errSuccess

操作は正常に完了しました。

JetSetIndexRange の場合、既存のインデックス範囲が取り消されたか、インデックス範囲内に少なくとも 1 つのインデックス エントリがあることを意味します。

JET_errClientRequestToStopJetService

JetStopService の呼び出しの結果、セッションに関連付けられたインスタンス上のすべてのアクティビティが停止したため、操作を完了することはできません。

JET_errInstanceUnavailable

セッションに関連付けられているインスタンスで致命的なエラーが発生したため、操作を完了できません。このエラーでは、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要があります。

このエラーは、Windows XP 以降のリリースでのみ返されます。

JET_errInvalidOperation

このエラーは、JET_bitRangeRemoveが指定されていて、インデックス範囲が有効でなかった場合、 JetSetIndexRange によって返されます。

JET_errKeyNotMade

カーソルの現在の検索キーはありません。 JetSetIndexRange では、インデックス エントリの検索に使用される検索条件にカーソルに有効な検索キーが使用されるため、カーソルに有効な検索キーが必要です。

JET_errNoCurrentIndex

カーソルの現在のインデックスはありません。 これは、カーソルがテーブルのクラスター化インデックス上にあり、プライマリ インデックスが定義されていない場合に 、JetSetIndexRange に対して発生します。 このようなインデックスに対するインデックス範囲の設定はサポートされていません。

JET_errNoCurrentRecord

このエラーは JetSetIndexRange によって返され、インデックス範囲内にインデックス エントリがないことを示します。

JET_errNotInitialized

セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。

JET_errRestoreInProgress

セッションに関連付けられているインスタンスで復元操作が進行中であるため、操作を完了できません。

JET_errSessionSharingViolation

同じセッションを複数のスレッドに同時に使用することはできません。

このエラーは、Windows XP 以降のリリースでのみ返されます。

JET_errTermInProgress

セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。

成功した場合、JET_bitRangeRemoveが指定されている場合、現在有効なインデックス範囲は取り消されます。 JET_bitRangeRemoveが指定されておらず、JET_bitRangeInstantDurationが指定されている場合、インデックス範囲は有効になりません。 JET_bitRangeRemoveもJET_bitRangeInstantDurationも指定されていない場合は、新しいインデックス範囲が有効になります。 このインデックス範囲は、 JetMove を使用してカーソルが歩くことができるインデックス エントリのセットを、現在のインデックス エントリから始まり、検索条件に一致するインデックス エントリで終わるインデックス エントリに一時的に制限します。 カーソルの位置は変更されません。 カーソルの検索キーが作成されている場合、その検索キーは削除されます。 データベースの状態は変更されません。

失敗した場合、JET_errNoCurrentRecordが返されない場合、インデックス範囲は有効になりません。 JET_errNoCurrentRecordが返された場合、新しいインデックス範囲が有効になります。 このインデックス範囲は、 JetMove を使用してカーソルが歩くことができるインデックス エントリのセットを、現在のインデックス エントリから始まり、検索条件に一致するインデックス エントリで終わるインデックス エントリに一時的に制限します。 カーソルの位置は変更されません。 JET_errNoCurrentRecordが返され、カーソルの検索キーが作成されている場合、その検索キーは削除されます。 データベースの状態は変更されません。

解説

インデックス範囲は揮発性であり、 JetMove 以外のナビゲーションがカーソルで実行されると自動的に取り消されます。

インデックス範囲は 1 方向でのみ機能します。 上限が設定されている場合は、インデックス範囲の末尾に達すると、 JetMove を使用してJET_MoveNextまたは正のオフセットを使用した前方モーションのみが防止されます。 この場合も、JET_MovePreviousまたは負のオフセットで JetMove を使用してインデックス範囲を残すことができます。 同様の状況は、下限に対して発生します。

要件

要件

Client

Windows Vista、Windows XP、または Windows 2000 Professional が必要です。

[サーバー]

Windows Server 2008、Windows Server 2003、または Windows 2000 Server が必要です。

Header

Esent.h で宣言されています。

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

参照

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetMakeKey
JetMove
JetSetIndexRange
JetStopService