Функция LOOKUP()

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

Синтаксис:

LOOKUP(ReturnField, eSearchExpression, SearchedField [, cTagName])

Параметры:
ReturnField
Задает поле, содержимое которого функция LOOKUP( ) возвращает, если поиск завершается успешно. Если поиск оказывается неудачным, LOOKUP( ) возвращает пустую символьную строку той же длины и того же типа, что и ReturnField.
eSearchExpression
Задает искомое выражение. Им обычно служит содержимое поля в таблице, или же оно может соответствовать выражению индекса в активном индексе или теге составного индекса.
SearchedField
Задает поле, которое необходимо проверять. Если у таблицы нет активного индекса, функция LOOKUP( ) осуществляет последовательный просмотр по полям, заданным аргументом SearchedField.
Если открыт файл индекса или тег индекса, выражение индекса которого задано в качестве искомого выражения, LOOKUP( ) выполнит поиск быстрее, пользуясь этим файлом индекса или тегом индекса.
cTagName
Задает имя тега составного индекса, который функция LOOKUP( ) будет использовать при поиске. Поиск по составному индексу это самый быстрый метод поиска, который возможен в случае функции LOOKUP( ).

Результат:
Типа Character, Numeric, Currency, Float, Integer, Double, Date, DateTime или Logical.

Комментарии:
Если поиск завершается успешно, функция LOOKUP( ) перемещает указатель записи к найденной записи и возвращает содержимое заданного поля в этой записи.
Если искомое выражение не найдено, LOOKUP( ) возвращает пустую строку той же длины и того же типа, что и ReturnField. Указатель записи устанавливается в конце файла.
Если функция LOOKUP( ) используется для поиска в родительской таблице, указатели записи во всех связанных дочерних таблицах перемещаются к связанным записям.
Данную функцию нельзя оптимизировать по технологии Rushmore.

Пример:

* В следующем примере функция LOOKUP( ) использует тег индекса
* company для поиска первого вхождения строки "Ernst Handel". Если поиск
* завершается успешно, LOOKUP( ) возвращает содержимое поля contact, а
* команда @ ... SAY отображает возвращаемое значение.

CLOSE DATABASES
OPEN DATABASE (HOME( ) + 'samples\data\testdata')
USE customer		&& Open Customer table
CLEAR
USE customer ORDER company
@ 2,2 SAY LOOKUP(contact, 'Ernst Handel', company, 'company')

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 18.02.2003