Функция JetGotoBookmark

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

Функция JetGotoBookmark

Функция JetGotoBookmark помещает курсор в запись индекса для записи, связанной с указанной закладкой. Закладку можно использовать с любым индексом, определенным в таблице. Закладку для записи можно получить с помощью JetGetBookmark.

    JET_ERR JET_API JetGotoBookmark(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __in          void* pvBookmark,
      __in          unsigned long cbBookmark
    );

Параметры

sesid

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

tableid

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

pvBookmark

Буфер, содержащий закладку, используемую для размещения курсора.

cbBookmark

Размер закладки в буфере.

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

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

Код возврата

Описание

JET_errSuccess

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

JET_errClientRequestToStopJetService

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

JET_errInstanceUnavailable

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

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

JET_errInvalidBookmark

Указанная закладка недопустима. Это могло произойти из-за того, что размер закладки равен нулю или указатель буфера закладки имеет значение NULL.

JET_errNoCurrentRecord

Курсор находится на вторичном индексе, и запись индекса, связанная с закладкой, не найдена.

JET_errNotInitialized

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

JET_errRecordDeleted

Не удалось найти запись, связанную с закладкой.

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

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

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

JET_errTermInProgress

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

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

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

Комментарии

Существует два способа использования закладки для размещения курсора на индексе. Первый — использовать закладку для непосредственного размещения записи. Это происходит, когда текущий индекс курсора является основным индексом. Этот метод работает, так как закладка ESENT совпадает с первичным ключом связанной записи.

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

Требования

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

Клиент

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