Функция JetGetCurrentIndex
Применимо к: Windows | Windows Server
Функция JetGetCurrentIndex
Функция JetGetCurrentIndex определяет имя текущего индекса заданного курсора. Это имя также используется для последующего повторного выбора этого индекса в качестве текущего с помощью JetSetCurrentIndex. Его также можно использовать для обнаружения свойств этого индекса с помощью JetGetTableIndexInfo.
JET_ERR JET_API JetGetCurrentIndex(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out JET_PSTR szIndexName,
__in unsigned long cchIndexName
);
Параметры
sesid
Сеанс, используемый для этого вызова.
tableid
Курсор, используемый для этого вызова.
szIndexName
Выходной буфер, получающий имя текущего индекса курсора.
cchIndexName
Максимальный размер выходного буфера в символах.
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errClientRequestToStopJetService |
Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService. |
JET_errInstanceUnavailable |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errNotInitialized |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errRestoreInProgress |
Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errSessionSharingViolation |
Один и тот же сеанс нельзя использовать для нескольких потоков одновременно. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errTermInProgress |
Невозможно завершить операцию, так как экземпляр, связанный с сеансом, завершает работу. |
JET_wrnBufferTruncated |
Операция завершилась успешно, но выходной буфер был слишком мал, чтобы получить все имя индекса. Выходной буфер был заполнен с таким количеством имени индекса, как поместилось бы. Если выходной буфер имеет длину хотя бы одного символа, строка в этом выходном буфере будет завершаться null. Примечание Эта ошибка не будет возвращена, если cchIndexName равно нулю. Дополнительные сведения см. в разделе Примечания. |
При успешном выполнении имя текущего индекса заданного курсора будет возвращено в выходном буфере. Если возвращается JET_wrnBufferTruncated, выходной буфер будет содержать столько имени индекса, сколько поместится в указанном пространстве. Если выходной буфер имеет длину хотя бы одного символа, то строка, возвращаемая в этом буфере, будет завершаться null. Изменение состояния базы данных не произойдет.
При сбое состояние выходного буфера будет неопределенным. Изменение состояния базы данных не произойдет.
Комментарии
Если текущего индекса для курсора нет, возвращается пустая строка. Это может произойти, если курсор находится на кластеризованном индексе таблицы и не определен первичный индекс. Этот индекс называется последовательным индексом таблицы и не имеет определения. В любом случае при установке для текущего индекса пустой строки с помощью JetSetCurrentIndex будет выбран кластеризованный индекс независимо от наличия определения первичного индекса.
В этой функции есть важная ошибка, которая присутствует во всех выпусках. Если выходной буфер слишком мал для получения всего имени индекса, а выходной буфер имеет длину хотя бы одного символа, JET_wrnBufferTruncated не будет возвращен. Вместо этого будет возвращена JET_errSuccess. Чтобы избежать этой проблемы, выходной буфер всегда должен быть не менее JET_cbNameMost + 1 (65) символов в длину.
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Professional. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
Юникод |
Реализовано как JetGetCurrentIndexW (Юникод) и JetGetCurrentIndexA (ANSI). |
См. также:
JET_ERR
JET_SESID
JET_TABLEID
JetGetTableIndexInfo
JetSetCurrentIndex