Поделиться через


Функция 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

Курсор, используемый для этого вызова.

pcrec

Указатель на длинное значение без знака для получения счетчика.

crecMax

Максимальное количество записей для подсчета. Значение crecMax , равное 0, указывает, что количество не ограничено.

Возвращаемое значение

Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.

Код возврата

Описание

JET_errSuccess

Операция выполнена успешно.

JET_errClientRequestToStopJetService

Операция не может завершиться, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService.

JET_errInstanceUnavailable

Операция не может завершиться, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных.

Windows XP: Это возвращаемое значение появилось в Windows XP.

JET_errNoCurrentRecord

Курсор в настоящее время не находится на записи, и таблица не пуста.

Windows XP, Windows Server 2003, Windows 2000 Server и Windows 2000 Профессиональная: Если курсор находится в пустом индексе или диапазоне индексов, JetIndexRecordCount ошибочно возвращает JET_errNoCurrentRecord.

JET_errNotInitialized

Операция не может завершиться, так как экземпляр, связанный с сеансом, еще не инициализирован.

JET_errRestoreInProgress

Операция не может завершиться, так как в экземпляре, связанном с сеансом, выполняется операция восстановления.

JET_errSessionSharingViolation

Один и тот же сеанс нельзя использовать для нескольких потоков одновременно.

Windows XP: Это возвращаемое значение появилось в Windows XP.

JET_errTermInProgress

Операция не может завершиться, так как экземпляр, связанный с сеансом, завершает работу.

Если эта функция выполняется успешно, точное количество записей индекса, включая текущую позицию и до crecMax (если оно не равно 0), возвращается в поле без знака long, на который указывает pcrec.

Если эта функция завершается сбоем, изменения в памяти, выделенной в precpos, не вносятся.

Комментарии

Если таблица не пуста, курсор должен располагаться на записи, с которой начинается подсчет. Счетчик будет включать эту запись и рассчитывать до заданного предела в crecMax. Если crecMax равно 0, то операция будет продолжать подсчет до конца индекса.

Диапазоны индексов можно использовать для создания искусственных ограничений конца индекса для счетчика. Таким образом, поддиагации индекса можно точно подсчитать. Курсор должен располагаться в первой строке в диапазоне. Необходимо сделать конец клавиши диапазона, а затем использовать JetSetIndexRange для задания верхнего диапазона включительно или исключительно. Наконец, для точного подсчета диапазона необходимо вызвать JetIndexRecordCount .

JetIndexRecordCount подчиняется семантике транзакций и возвращает точное число для конкретного сеанса в текущем состоянии транзакций.

JetIndexRecordCount обращается к конечным страницам индекса для точного подсчета записей. Следовательно, он может выполнять много операций ввода-вывода и может быть медленным. Ограничение crecMax следует использовать для предотвращения чрезмерной нагрузки. Если диапазон большой, можно подсчитать его приблизительно с помощью JetGetRecordPosition.

Windows XP, Windows Server 2003, Windows 2000 Server и Windows 2000 Профессиональная: Если курсор расположен на пустом индексе или диапазоне индексов, то JetIndexRecordCount ошибочно возвращает JET_errNoCurrentRecord, а не нулевое число записей. Приложение должно проверка, чтобы узнать, является ли индекс или диапазон индексов пустым в этом случае.

Требования

Требование Значение

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Professional.

Сервер

Требуется 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