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