JetSetCurrentIndex 函式
適用于: Windows |Windows Server
JetSetCurrentIndex 函式
JetSetCurrentIndex函式可用來設定資料指標的目前索引。 資料指標的目前索引會定義該資料指標可以看到哪些記錄,以及要用來公開這些記錄的索引項目目集來顯示它們的順序。
JET_ERR JET_API JetSetCurrentIndex(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in_opt const tchar* szIndexName
);
參數
sesid
要用於這個呼叫的會話。
tableid
要用於這個呼叫的資料指標。
szIndexName
要為數據指標選取的索引名稱。
如果此參數為 Null 或空字串,則會選取叢集索引。 如果為數據表定義主索引,則會選取該索引,因為它與叢集索引相同。 如果未定義資料表的主要索引,則會選取循序索引。 循序索引沒有索引定義。 如需詳細資訊,請參閱 JetCreateIndex 。
如果 pindexid 不是 Null,則會忽略索引名稱,並依索引識別碼選取索引。
傳回值
此函式會傳回具有下列其中一個傳回碼 的 JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
Description |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errBadItagSequence |
系統會使用 [JET_bitNoMove] 選項選取次要索引,而且新索引定義中第一個多重值索引鍵資料行的值與指定的序號相對應。 |
JET_errClientRequestToStopJetService |
無法完成作業,因為與會話相關聯之實例上的所有活動因 JetStopService呼叫而停止。 |
JET_errInvalidIndexId |
索引識別碼的內容無效或已過期,必須重新整理。 當下列情況時 ,JetSetCurrentIndex 可能會發生此問題:
|
JET_errInstanceUnavailable |
無法完成作業,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。 此錯誤只會由 Windows XP 和更新版本傳回。 |
JET_errInvalidName |
其中一個指定的物件名稱無效。 所有物件名稱都必須符合相同的規則集。 這些規則如下:
|
JET_errInvalidParameter |
提供的其中一個參數包含非預期的值,或包含與另一個參數的值結合時沒有意義的值。 當pindexid不是 Null 且 pindexid-cbStruct > 不是 Windows XP 和舊版) 的預期大小 (,JetSetCurrentIndex就會發生這種情況。 |
JET_errNoCurrentRecord |
系統會使用 [JET_bitNoMove] 選項選取次要索引,而且新索引中沒有索引項目對應至舊索引上資料指標目前位置上與索引項目相關聯的記錄。 |
JET_errNotInitialized |
無法完成作業,因為與會話相關聯的實例尚未初始化。 |
JET_errOutOfCursors |
引擎已耗盡其用來開啟資料指標的資源集區。 您可以使用 JET_paramMaxCursors控制隨時可開啟的資料指標數目上限。 如需詳細資訊,請參閱 JetSetSystemParameter 。 當已選取次要索引,且引擎無法開啟內部資料指標以使用該索引時, JetSetCurrentIndex 就會發生這種情況。 |
JET_errRestoreInProgress |
無法完成作業,因為與會話相關聯的實例上正在進行還原作業。 |
JET_errSessionSharingViolation |
同一個會話不能同時用於一個以上的執行緒。 此錯誤只會由 Windows XP 和更新版本傳回。 |
JET_errTermInProgress |
無法完成作業,因為與會話相關聯的實例正在關閉。 |
成功時,資料指標的目前索引會設定為要求的索引。 根據要求之索引的索引定義,現在可以使用 JetSeek 來尋找索引項目目。 您也可以依照該索引定義所指定的順序,使用 JetMove 列舉索引項目目。 游標的目前位置會設定為索引 (JET_bitMoveFirst) 上的第一個索引項目目,或設定為與舊索引 (JET_bitNoMove) 上資料指標目前位置相關的特定索引項目目。 不會變更資料庫狀態。
失敗時,資料指標的目前索引和目前位置處於未定義狀態。 不會變更資料庫狀態。
備註
如果索引識別碼提示過時,API 只會失敗。 在此情況下,索引的文字名稱沒有後援,如同預期一樣。 此後援必須由 API 的呼叫端手動完成。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
Unicode |
實作為 JetSetCurrentIndexW (Unicode) 和 JetSetCurrentIndexA (ANSI) 。 |
另請參閱
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSeek
JetSetCurrentIndex
JetSetSystemParameter
JetStopService