Возвращает значение = True (.T.), если указанный индексный Тэг имеет статус Candidate; в противном случае возвращается значение, = False (.F.).

CANDIDATE([nIndexNumber] [, nWorkArea | cTableAlias])

Параметры

nIndexNumber

Определяет порядковый номер индексного Тэга, для которого функция CANDIDATE( ) возвращает статус candidate (может ли индексный Тэг быть первичным ключем, имеет уникальные и ненулевые значения для каждой записи таблицы). Функция CANDIDATE( ) возвращает характеристику статуса candidate в следующем порядке: параметр nIndexNumber изменяется от 1 - до общего количества индексных Тэгов открытых в настоящий момент составных структурных и независимых индексных файлов, содержащих индексные Тэги:

  1. Сначала возвращается  характеристика Candidate индексных тэгов структурного индексного файла (если таковой имеется). Индексные Тэги структурного индексного файла размещаются в порядке их создания.

  2. Далее определяется статус "возможного первичного ключа" (Candidate) для индексных Тэгов независимого составного индексного файла (если таковой открыт). Индексные Тэги независимого составного индексного файла размещаются в порядке их создания.

Если рассматриваемый параметр nIndexNumber отсутствует, CANDIDATE( ) тестирует текущий активный индексный Тэг, может ли быть данный тэг первичным ключем таблицы. Если в настоящий момент не установлен активный индексный Тэг, CANDIDATE( ) возвращает значение = False (.F.).

nWorkArea

Определяет номер рабочей области, для которой тестируется индексный Тэг, номер которого задан параметром nIndexNumber.

cTableAlias

Определяет алиас Таблицы, для которой тестируется индексный Тэг с номером nIndexNumber.

Если последние параметры nWorkArea , cTableAlias - отсутствуют, CANDIDATE( ) тестирует индексный Тэг таблицы, открытой в текущей рабочей области.

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

Логического типа (Logical)

Expand imageКомментарии

Индексный Тэг имеет статус Candidate - если он может быть первичным ключем (индексом) таблицы, то есть: не имеет нулевых (пустых) значений и не содержит дублирующих значений (только уникальные).

Expand imageПример

В представленном ниже примере: открывеется таблица customer, из соответствующей базы данных testdata. Оператор цикла FOR ... ENDFOR используется для перебора всех доступных индексных Тэгов, которые тестируются на статус Сandidate (предполагается наличие структурного индексного файла, который открывается вместе с открытием Таблицы) - customer.cdx. Для каждого индексного Тэга выводится статус candidate.

  CopyCode imageКопировать Код
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE customer && Open customer table

FOR nCount = 1 TO TAGCOUNT( )
IF !EMPTY(TAG(nCount)) && Checks for tags in the index
? TAG(nCount) && Display tag name
? CANDIDATE(nCount) && Display candidate status
ELSE
EXIT && Exit the loop when no more tags are found
ENDIF
ENDFOR

Expand imageСм. также