JetIndexRecordCount 函式
適用于: Windows |Windows Server
JetIndexRecordCount 函式
JetIndexRecordCount函式會從目前位置向前計算目前索引中的專案數。 目前的位置包含在計數中。 如果目前的索引超過多重值資料行,且資料行的實例具有多重值值,則計數可以大於資料表中的記錄總數。 如果資料表是空的,則會針對計數傳回 0。
JET_ERR JET_API JetIndexRecordCount(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out unsigned long* pcrec,
__in unsigned long crecMax
);
參數
sesid
要用於這個呼叫的會話。
tableid
要用於這個呼叫的資料指標。
pcec
要接收計數之不帶正負號 long 值的指標。
crecMax
要計算的記錄數目上限。 crecMax值為 0 表示計數無限制。
傳回值
此函式會傳回具有下列其中一個傳回碼 的 JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸儲存引擎錯誤 和 錯誤處理參數。
傳回碼 |
描述 |
---|---|
JET_errSuccess |
作業已成功完成。 |
JET_errClientRequestToStopJetService |
作業無法完成,因為與會話相關聯的實例上的所有活動都因為 對 JetStopService的呼叫而停止。 |
JET_errInstanceUnavailable |
作業無法完成,因為與會話相關聯的實例發生嚴重錯誤,需要撤銷所有資料的存取權,以保護該資料的完整性。 Windowsxp: 這個傳回值是在 Windows XP 中引進。 |
JET_errNoCurrentRecord |
資料指標目前不在記錄上,而且資料表不是空的。 Windows XP、Windows Server 2003、Windows 2000 Server 和 Windows 2000 Professional: 如果游標位於空的索引或索引範圍上, JetIndexRecordCount 會錯誤地傳回JET_errNoCurrentRecord。 |
JET_errNotInitialized |
作業無法完成,因為與會話相關聯的實例尚未初始化。 |
JET_errRestoreInProgress |
作業無法完成,因為與會話相關聯的實例上正在進行還原作業。 |
JET_errSessionSharingViolation |
同一個會話不能同時用於一個以上的執行緒。 Windowsxp: 這個傳回值是在 Windows XP 中引進。 |
JET_errTermInProgress |
作業無法完成,因為與會話相關聯的實例正在關閉。 |
如果此函式成功,則會傳回在不帶正負號的 long 中 (, 包括目前位置的確切索引項目目數目,如果不是 0) ,則會傳回至 由) 的未簽署長。
如果此函式失敗,則不會對配置於 precpos的記憶體進行任何變更。
備註
如果資料表不是空的,則游標應該放在要開始計數的記錄上。 計數將包含此記錄,並將計數向前計算為 crecMax中的指定限制。 如果 crecMax 為 0,則作業會繼續計數,直到索引結尾為止。
索引範圍可用來建構計數的人工索引結束限制。 如此一來,就可以完全計算索引的子範圍。 游標應該位於範圍中的第一個資料列。 應該建立範圍索引鍵的結尾,然後應該使用 JetSetIndexRange 來設定上限範圍,包括或獨佔。 最後,應該呼叫 JetIndexRecordCount 來確切計算範圍。
JetIndexRecordCount 會遵循交易語意,並傳回此特定會話在其目前交易狀態中正確計數。
JetIndexRecordCount 會存取索引分葉頁面,以便確切計算專案。 因此,它可以執行大量的 I/O,而且可能會很慢。 crecMax限制應該用來防止過多的負載。 如果某個範圍很大,則可以使用 JetGetRecordPosition以近似方式計算範圍。
Windows XP、Windows Server 2003、Windows 2000 Server 和 Windows 2000 Professional: 如果游標位於空的索引或索引範圍上, JetIndexRecordCount 會錯誤地傳回JET_errNoCurrentRecord,而不是傳回零的記錄計數。 在此案例中,應用程式應該檢查索引或索引範圍是否為空白。
規格需求
需求 | 值 |
---|---|
用戶端 |
需要 Windows Vista、Windows XP 或 Windows 2000 Professional。 |
Server |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
標頭 |
在 Esent.h 中宣告。 |
程式庫 |
使用 ESENT.lib。 |
Dll |
需要ESENT.dll。 |
另請參閱
JET_ERR
JET_SESID
JET_TABLEID
JetGetRecordPosition
JetSetIndexRange
JetStopService