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