共用方式為


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