Функция JetSetCurrentIndex
Применимо к: Windows | Windows Server
Функция JetSetCurrentIndex
Функцию JetSetCurrentIndex можно использовать для задания текущего индекса курсора. Текущий индекс курсора определяет, какие записи в таблице видимы для этого курсора, и порядок их отображения путем выбора набора записей индекса, используемых для предоставления этих записей.
JET_ERR JET_API JetSetCurrentIndex(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in_opt const tchar* szIndexName
);
Параметры
sesid
Сеанс, используемый для этого вызова.
tableid
Курсор, используемый для этого вызова.
szIndexName
Имя индекса, который будет выбран для курсора.
Если этот параметр имеет значение NULL или пустую строку, будет выбран кластеризованный индекс. Если для таблицы определен первичный индекс, он будет выбран, так как он совпадает с кластеризованным индексом. Если для таблицы не определен первичный индекс, будет выбран последовательный индекс. Последовательный индекс не имеет определения индекса. Дополнительные сведения см. в разделе JetCreateIndex .
Если pindexid не равно NULL, имя индекса будет игнорироваться, а индекс будет выбран по идентификатору индекса.
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errBadItagSequence |
Дополнительный индекс выбирается с параметром JET_bitNoMove, и в определении нового индекса отсутствует значение для первого многозначного ключевого столбца, соответствующего указанному порядковому номеру. |
JET_errClientRequestToStopJetService |
Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService. |
JET_errInvalidIndexId |
Содержимое идентификатора индекса было недопустимым или истекло, и его необходимо обновить. Это может произойти для JetSetCurrentIndex , если:
|
JET_errInstanceUnavailable |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errInvalidName |
Одно из указанных имен объектов было недопустимым. Все имена объектов должны соответствовать одному набору правил. Ниже приведены эти правила.
|
JET_errInvalidParameter |
Один из предоставленных параметров содержал непредвиденное значение или значение, которое не имело смысла в сочетании со значением другого параметра. Это может произойти для JetSetCurrentIndex, если pindexid не равно NULL, а pindexid-cbStruct> не соответствует ожидаемому размеру (Windows XP и более ранние выпуски). |
JET_errNoCurrentRecord |
Дополнительный индекс выбирается с параметром JET_bitNoMove, и в новом индексе отсутствует запись индекса, соответствующая записи, связанной с записью индекса в текущей позиции курсора на старом индексе. |
JET_errNotInitialized |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errOutOfCursors |
Подсистема исчерпала свой пул ресурсов, используемых для открытия курсоров. Максимальное количество курсоров, которые можно открыть в любой момент времени, управляется с помощью JET_paramMaxCursors. Дополнительные сведения см. в разделе JetSetSystemParameter . Это может произойти для JetSetCurrentIndex , если выбран вторичный индекс и подсистема не может открыть внутренний курсор для использования этого индекса. |
JET_errRestoreInProgress |
Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errSessionSharingViolation |
Один и тот же сеанс нельзя использовать одновременно для нескольких потоков. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errTermInProgress |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, завершает работу. |
При успешном выполнении текущий индекс курсора устанавливается в качестве запрошенного индекса. Записи индекса теперь можно искать с помощью JetSeek в соответствии с определением индекса запрошенного индекса. Записи индекса также можно перечислить с помощью JetMove в порядке, указанном в определении индекса. Текущее положение курсора устанавливается либо как первая запись индекса в индексе (JET_bitMoveFirst), либо определенная запись индекса, связанная с текущей позицией курсора по старому индексу (JET_bitNoMove). Изменение состояния базы данных не произойдет.
При сбое текущий индекс и текущее положение курсора находятся в неопределенном состоянии. Изменение состояния базы данных не произойдет.
Комментарии
Если указание идентификатора индекса устарело, API просто завершается ошибкой. В этом случае нет возврата к текстовому имени индекса, как можно было бы ожидать. Этот резервный вариант должен быть выполнен вручную вызывающим элементом API.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
Юникод |
Реализовано как JetSetCurrentIndexW (Юникод) и JetSetCurrentIndexA (ANSI). |
См. также:
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_INDEXID
JetCreateIndex
JetGetCurrentIndex
JetGetIndexInfo
JetGetTableIndexInfo
JetMove
JetSeek
JetSetCurrentIndex
JetSetSystemParameter
JetStopService