Функция JetGetRecordPosition

Применимо к: Windows | Windows Server

Функция JetGetRecordPosition

Функция JetGetRecordPosition возвращает дробную позицию текущей записи в текущем индексе в виде структуры JET_RECPOS . Эта структура описывает дробные позиции с точки зрения приблизительного числа записей индекса до текущей записи и приблизительного общего числа записей в индексе.

    JET_ERR JET_API JetGetRecordPosition(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out         JET_RECPOS* precpos,
      __in          unsigned long cbRecpos
    );

Параметры

sesid

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

tableid

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

precpos

Описание дроби, используемой для получения позиции текущей записи в текущем индексе.

cbRecpos

Размер памяти, выделенной в precpos.

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

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

Код возврата

Описание

JET_errSuccess

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

JET_errNotInitialized

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

JET_errClientRequestToStopJetService

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

JET_errInstanceUnavailable

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

Windows 2000: Эта ошибка не будет возвращена операционной системой Windows 2000.

JET_errInvalidParameter

Размер выделенной памяти в precpos не является достаточным.

JET_errNoCurrentRecord

Курсор в настоящее время не находится на записи и не может вернуть позицию.

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

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

Windows 2000: Эта ошибка не будет возвращена операционной системой Windows 2000.

JET_errTermInProgress

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

При успешном выполнении приблизительное количество записей индекса, предшествующих текущей записи в индексе, возвращается в precpos-centriesLT>. 1 возвращается в precpos-centriesInRange>. Приблизительное количество записей в индексе возвращается в precpos-centriesTotal>.

При сбое в памяти, выделенной в precpos, не вносятся никакие изменения.

Комментарии

Эта операция возвращает различные данные при непрерывном обновлении таблицы. Изменения в значениях не всегда будут соответствовать ожиданиям на основе знаний об обновлениях, так как значения являются приблизителями на основе физических свойств индекса. Изоляция транзакций не применяется к позициям из JetGetRecordPosition , так как значения зависят от физических свойств индекса, которые не изолированы от транзакций.

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

Требования

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

Клиент

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

Сервер

Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server.

Верхняя часть

Объявлено в Esent.h.

Библиотека

Используйте ESENT.lib.

DLL

Требуется ESENT.dll.

См. также:

JET_COLUMNID
JET_ERR
JET_SESID
JET_TABLEID
JET_RECPOS
JET_SETINFO
JetGotoPosition
JetStopService