JetSetCurrentIndex3 関数
適用対象: Windows |Windows Server
JetSetCurrentIndex3 関数
JetSetCurrentIndex3 関数は、カーソルの現在のインデックスを設定するために使用されます。 カーソルの現在のインデックスは、テーブル内のどのレコードをそのカーソルに表示するかを定義し、それらのレコードを公開するために使用するインデックス エントリのセットを選択して表示順序を定義します。
JET_ERR JET_API JetSetCurrentIndex3(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in_opt JET_PCSTR szIndexName,
__in JET_GRBIT grbit,
__in unsigned long itagSequence
);
パラメーター
sesid
この呼び出しに使用するセッション。
tableid
この呼び出しに使用するカーソル。
szIndexName
カーソルに対して選択するインデックスの名前。
このパラメーターが NULL または空の文字列の場合は、クラスター化インデックスが選択されます。 テーブルに対してプライマリ インデックスが定義されている場合、クラスター化インデックスと同じであるため、そのインデックスが選択されます。 テーブルにプライマリ インデックスが定義されていない場合は、シーケンシャル インデックスが選択されます。 シーケンシャル インデックスにはインデックス定義がありません。 詳細については、「 JetCreateIndex 」を参照してください。
pindexid が NULL でない場合、インデックス名は無視され、インデックス ID によってインデックスが選択されます。
grbit
この呼び出しに使用するオプションを含むビットのグループ。これには、次の 0 個以上が含まれます。
値 |
説明 |
---|---|
JET_bitMoveFirst |
このオプションは、指定したインデックスの最初のエントリにカーソルを置く必要があることを示します。 クラスター化インデックス (プライマリ インデックスまたはシーケンシャル インデックス) が選択されていて、現在のインデックスがセカンダリ インデックスである場合は、JET_bitMoveFirstが想定されます。 現在のインデックスが選択されている場合、このオプションは無視され、カーソル位置は変更されません。 |
JET_bitNoMove |
このオプションは、古いインデックス上のカーソルの現在位置にあるインデックス エントリに関連付けられているレコードに対応する新しいインデックスのインデックス エントリにカーソルを置く必要があることを示します。 新しいインデックスの定義に少なくとも 1 つの複数値キー列が含まれている場合、変換先のインデックス エントリはあいまいです。 この場合、指定した itagSequence を使用して、カーソルを配置するために最も重要な複数値キー列の複数値を選択します。 複数の複数値キー列の場合でも、1 つの itagSequence を渡す必要があるのは、エンジンが最も重要な複数値のキー列のすべての値のみを展開するためです。 詳細については、「 JetCreateIndex 」を参照してください。 JET_bitMoveFirstが指定されている場合、このオプションは無視されます。 現在のインデックスが選択されている場合、このオプションは無視され、カーソル位置は変更されません。 このパラメーターが存在しない場合、その値はJET_bitMoveFirstと見なされます。 |
itagSequence
新しいインデックスにカーソルを置くために使用される複数値の列値のシーケンス番号。
このパラメーターは、JET_bitNoMoveと組み合わせてのみ使用されます。 詳細については、このオプションの説明を参照してください。
このパラメーターが存在しない場合、または 0 に設定されている場合、その値は 1 と見なされます。
戻り値
この関数は、次のいずれかのリターン コードを使用して 、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張可能ストレージ エンジン エラー 」および「 エラー処理パラメーター」を参照してください。
リターン コード |
説明 |
---|---|
JET_errSuccess |
操作は正常に完了しました。 |
JET_errBadItagSequence |
JET_bitNoMove オプションを使用してセカンダリ インデックスが選択されており、指定したシーケンス番号に対応する新しいインデックスの定義の最初の複数値キー列の値はありません。 |
JET_errClientRequestToStopJetService |
JetStopService の呼び出しの結果、セッションに関連付けられたインスタンス上のすべてのアクティビティが停止したため、操作を完了することはできません。 |
JET_errInstanceUnavailable |
セッションに関連付けられているインスタンスで致命的なエラーが発生したため、操作を完了できません。このエラーでは、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要があります。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errInvalidIndexId |
インデックス ID の内容が無効であるか、有効期限が切れているので、更新する必要があります。 これは、次の場合に JetSetCurrentIndex3 で発生する可能性があります。
|
JET_errInvalidName |
指定されたオブジェクト名の 1 つが無効です。 すべてのオブジェクト名は、同じ規則セットに準拠している必要があります。 これらのルールを以下に示します。
|
JET_errInvalidParameter |
指定されたパラメーターの 1 つに、予期しない値が含まれていたか、別のパラメーターの値と組み合わせると意味のない値が含まれていました。 これは、pindexid が NULL ではなく、pindexid-cbStruct> が予想サイズ (Windows XP 以前のリリース) ではない場合に、JetSetCurrentIndex3 で発生する可能性があります。 |
JET_errNoCurrentRecord |
JET_bitNoMove オプションを使用してセカンダリ インデックスが選択されており、新しいインデックスには、古いインデックス上のカーソルの現在位置にあるインデックス エントリに関連付けられているレコードに対応するインデックス エントリがありません。 |
JET_errNotInitialized |
セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。 |
JET_errOutOfCursors |
エンジンは、カーソルを開くために使用されるリソースのプールを使い果たしました。 一度に開くことができるカーソルの最大数は、 JET_paramMaxCursorsを使用して制御されます。 詳細については 、「JetSetSystemParameter 」を参照してください。 これは、セカンダリ インデックスが選択されていて、エンジンがそのインデックスを使用する内部カーソルを開くことができない場合に 、JetSetCurrentIndex3 で発生する可能性があります。 |
JET_errRestoreInProgress |
セッションに関連付けられているインスタンスで復元操作が進行中であるため、操作を完了できません。 |
JET_errSessionSharingViolation |
同じセッションを複数のスレッドに同時に使用することはできません。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errTermInProgress |
セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。 |
成功すると、カーソルの現在のインデックスが要求されたインデックスに設定されます。 要求されたインデックスのインデックス定義に従って 、JetSeek を使用してインデックス エントリを検索できるようになりました。 インデックス エントリは、 JetMove を使用して、そのインデックス定義で指定された順序で列挙することもできます。 カーソルの現在位置は、インデックスの最初のインデックス エントリ (JET_bitMoveFirst) または古いインデックス (JET_bitNoMove) 上のカーソルの現在位置に関連する特定のインデックス エントリに設定されます。 データベースの状態は変更されません。
失敗した場合、カーソルの現在のインデックスと現在の位置は未定義の状態になります。 データベースの状態は変更されません。
解説
インデックス ID ヒントが古い場合、API は単に失敗します。 この場合、インデックスのテキスト名へのフォールバックはありません。 このフォールバックは、API の呼び出し元が手動で行う必要があります。
必要条件
要件 | 値 |
---|---|
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が必要です。 |
Unicode |
JetSetCurrentIndex3W (Unicode) および JetSetCurrentIndex3A (ANSI) として実装されます。 |
参照
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSetSystemParameter
JetSeek