Функция JetSetIndexRange

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

Функция JetSetIndexRange

Функция JetSetIndexRange временно ограничивает набор записей индекса, которые курсор может перемещать с помощью JetMove , теми, которые начинаются с текущей записи индекса и заканчиваются записью индекса, которая соответствует условиям поиска, заданным ключом поиска в этом курсоре и заданными связанными критериями. Ключ поиска должен быть ранее создан с помощью JetMakeKey.

    JET_ERR JET_API JetSetIndexRange(
      __in          JET_SESID sesid,
    __in          JET_TABLEID tableidSrc,
      __in          JET_GRBIT grbit
    );

Параметры

sesid

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

tableidSrc

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

grbit

Группа битов, содержащая параметры, которые будут использоваться для этого вызова, которые включают ноль или более следующих элементов:

Значение

Значение

JET_bitRangeInclusive

Наличие или отсутствие этого параметра указывает на граничные критерии диапазона индекса. При наличии этот параметр указывает, что предел диапазона индекса является инклюзивным. Если этот параметр отсутствует, это означает, что предел диапазона индекса является монопольным. Если предел диапазона индексов является инклюзивным, в диапазон включаются все записи индекса, точно соответствующие условиям поиска.

JET_bitRangeInstantDuration

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

JET_bitRangeRemove

Этот параметр запрашивает отмену существующего диапазона индекса курсора. После отмены диапазона индексов можно будет перейти за пределы конца диапазона индекса с помощью JetMove. Если диапазон индексов еще не действует, jetSetIndexRange завершится сбоем с JET_errInvalidOperation.

Если этот параметр указан, все остальные параметры игнорируются.

JET_bitRangeUpperLimit

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

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

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

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

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

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

Код возврата

Описание

JET_errSuccess

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

Для JetSetIndexRange это означает, что либо существующий диапазон индексов был отменен, либо есть по крайней мере одна запись индекса внутри диапазона индекса.

JET_errClientRequestToStopJetService

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

JET_errInstanceUnavailable

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

Эта ошибка будет возвращена только в Windows XP и более поздних выпусках.

JET_errInvalidOperation

Эта ошибка будет возвращена JetSetIndexRange , если указан JET_bitRangeRemove и диапазон индексов не действует.

JET_errKeyNotMade

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

JET_errNoCurrentIndex

Текущий индекс для курсора отсутствует. Это произойдет для JetSetIndexRange , если курсор находится на кластеризованном индексе таблицы, основной индекс не определен. Установка диапазона индекса для такого индекса не поддерживается.

JET_errNoCurrentRecord

Эта ошибка будет возвращена JetSetIndexRange , чтобы указать, что в диапазоне индексов нет записей индекса.

JET_errNotInitialized

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

JET_errRestoreInProgress

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

JET_errSessionSharingViolation

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

Эта ошибка будет возвращена только в Windows XP и более поздних выпусках.

JET_errTermInProgress

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

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

В случае сбоя, если JET_errNoCurrentRecord не возвращается, диапазон индекса не действует. Если возвращается JET_errNoCurrentRecord, действует новый диапазон индексов. Этот диапазон индексов временно ограничивает набор записей индекса, которые курсор может перемещать с помощью JetMove , теми, которые начинаются с текущей записи индекса и заканчиваются записью индекса, которая соответствует условиям поиска. Положение курсора останется неизменным. Если JET_errNoCurrentRecord возвращено и для курсора был создан ключ поиска, этот ключ поиска будет удален. Изменение состояния базы данных не произойдет.

Комментарии

Диапазон индекса является переменным и будет автоматически отменен при выполнении навигации по курсору, отличной от JetMove .

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

Требования

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

Клиент

Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная.

Сервер

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

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

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

Библиотека

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

DLL

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

См. также:

JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetMakeKey
JetMove
JetSetIndexRange
JetStopService