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