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

Обратите внимание:
Visual FoxPro не поддерживает операцию поиска для бинарных индексов.

SEEK eExpression   [ORDER nIndexNumber | IDXIndexFileName
    | [TAG] TagName [OF CDXFileName]    [ASCENDING | DESCENDING]]
[IN nWorkArea | cTableAlias]

Параметры

eExpression

Определяет индексный ключ, поиск которого осуществляет SEEK. eExpression может иметь значение null.
ORDER nIndexNumber

Определяет номер индексного файла или тэга, который используется для поиска индексного ключа. nIndexNumber относится к индексным файлам в порядке их перечисления в командах USE или SET INDEX. Открытые .idx-файлы нумеруются в первую очередь, в порядке их появления в командах USE или SET INDEX. Тэги структурного .cdx-файла (если существует) нумеруются во вторую очередь и в порядке их создания. Наконец, тэги любых открытых независимых .cdx-файлов нумеруются в последнюю очередь в порядке их создания. См. Команду SET ORDER для подробной информации о нумерации индексов.
ORDER IDXIndexFileName

Определяет .idx-файл, который используется для поиска индексного ключа.
ORDER [TAG] TagName [OF CDXFileName ]

Определяет тэг .cdx-файла, который используется для поиска индексного ключа. Имя тэга может быть взято из структурного .cdx-файла или любого открытого независимого .cdx-файла. Если существуют идентичные имена тэгов в открытых независимых .cdx-файлах, используйте предложение OF CDXFileName для определения .cdx-файла, содержащего данный тэг.
Обратите внимание:
.idx-файл имеет приоритет при наличии дубликатов имен .idx-файла и тэга.

ASCENDING

Определяет, что таблица просматривается в возрастающем порядке.
DESCENDING

Определяет, что таблица просматривается в порядке убывания.
IN nWorkArea

Определяет номер рабочей области просматриваемой таблицы.
IN cTableAlias

Определяет псевдоним просматриваемой таблицы. Если Вы опускаете IN nWorkArea и IN cTableAlias , просматривается таблица в текущей рабочей области.

Замечания

Вы можете использовать SEEK только с индексированными таблицами, и Вы можете осуществлять поиск только по индексному ключу. Соответствие поиска должно быть точным, если SET EXACT не установлено в OFF.

Если SEEK находит вхождение индексного ключа в записи, RECNO( ) возвращает номер записи вхождения, FOUND( ) возвращает истину (.T)., и EOF( ) возвращает ложь (.F.).

Если вхождение ключа не найдено, RECNO( ) возвращает количество записей в таблице плюс 1, FOUND( ) возвращает ложь (.F)., и EOF( ) возвращает истину (.T.).

Если включено SET NEAR, указатель записи позиционируется немедленно после записи с самым близким индексным ключом. Если SET NEAR выключен, указатель позиционируется в конец файла. В любом случае, RECNO () возвращает номер самой близкой записи.

Пример

В следующем примере, таблица "Клиенты" открывается и индексируется по полю Company. Используется SEEK, чтобы найти индексное ключевое выражение, которое соответствует значению, содержащемуся в переменной gcSeekVal .

Скопировать код
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE customer ORDER company && Opens Customer table
SET EXACT OFF
STORE 'B' TO gcSeekVal
SEEK gcSeekVal
IF FOUND( )
DISPLAY FIELDS company, contact
ENDIF

См. Также