Возвращает номер текущей записи в текущей или заданной таблице.

RECNO([nWorkArea | cTableAlias])

Параметры

nWorkArea

Задает номер рабочей области для таблицы открытой в другой рабочей области. RECNO( ) вернет 0, если в заданной рабочей области нет открытой таблицы.
cTableAlias

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

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

Числовое

Комментарии

Текущая запись - это запись, на которой установлен указатель записи.

RECNO( ) вернет отрицательные номера записей, добавленые в буфера таблицы.

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

Функция RECNO( ), выданная без аргументов nWorkArea или cTableAlias вернет текущий номер записи для таблицы, открытой в текущей рабочей области.

Если Вы безуспешно применили команду SEEK в индексированной таблице, то задав 0 в качестве nWorkArea, можно воспользоваться алгоритмом "мягкого поиска", возвращающим номер наиболее похожей записи. RECNO(0) возвращает 0, если такой похожей записи найти не удалось. Visual FoxPro сгенерирует сообщение об ошибке, если выдать GO RECNO(0), когда похожая запись не найдена.

Избегите использовать RECNO () в индексном выражении для буферизированной таблицы. Поскольку RECNO () изменяет для новых записей, когда они переданы TABLEUPDATE (), может произойти искажение индекса.

Пример

Следующий пример ищет в таблице customer клиента по названию компании и, если название компании не найдено, использует RECNO (0), чтобы возвратить самую близкую по названию компанию.

  Copy Code
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer  && Opens Customer table
SET ORDER TO company
SEEK 'Ernst'
IF FOUND( )
   DISPLAY company, contact
ELSE
   GOTO RECNO(0)
   CLEAR
   ? 'Closest matching company is ' + company
   ? 'Record number: ' + ALLTRIM(STR(RECNO( )))
ENDIF

Смотреть также