Перемещает указатель записи по таблице, выбранной в данный момент, и для каждой записи, удовлетворяющей указанным условиям, выполняет определенный блок команд.
SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2] [Commands] [LOOP] [EXIT] ENDSCAN |
Параметры
- NOOPTIMIZE
-
Запрещает оптимизацию выполнения команды SCAN по технологии Rushmore.
Подробнее об этом см. описание команды SET OPTIMIZE а также Использование оптимизации запросов Rushmore для ускорения доступа к данным.
- Scope
-
Задает просматриваемый диапазон записей. Будут анализироваться только записи, принадлежащие заданному диапазону. Диапазон определяется следующими предложениями: ALL, NEXT nRecords, RECORD nRecordNumber, и REST. Подробнее о предложениях диапазона см. Scope Clauses .
По умолчанию областью действия команды SCAN являются все записи (предложение ALL).
- FOR lExpression1
-
Задает выполнение команд только для тех записей, для которых значением выражения lExpression1 является "истина" (.T.). Включите предложение FOR для тфильтрации записей, которые не нужно просматривать.
Технология Rushmore позволяет оптимизировать запрос, сформированный командой SCAN ... FOR, если lExpression1представляет собой оптимизируемое выражение. В целях повышения производительности используйте в предложении FOR оптимизируемое выражение.
Подробнее об этом см. описание команды SET OPTIMIZE а также Использование оптимизации запросов Rushmore для ускорения доступа к данным.
- WHILE lExpression2
-
Задает условие, в соответствии с которым команды будут выполняться, пока значением выражения lExpression2 остается "истина" (.T.).
- Commands
-
Задает команды Visual FoxPro, которые следует выполнять.
- LOOP
-
Возвращает управление непосредственно оператору SCAN. Оператор LOOP можно ставить в любом месте между SCAN и ENDSCAN.
- EXIT
-
Передает управление из цикла SCAN ... ENDSCAN первой команде, следующей за ENDSCAN. Оператор EXIT можно ставить в любом месте между SCAN и ENDSCAN.
- ENDSCAN
-
Отмечает конец процедуры SCAN.
Замечания
SCAN автоматически продвигает указатель записи к следующей записи, удовлетворяющей заданным условиям, и выполняет блок команд.
После оператора ENDSCAN в той же строке можно писать комментарии. Они игнорируются в процессе компиляции и выполнения программы.
при достижении ENDSCAN текущей становится таблица, которая была выбрана на момент начала SCAN.
Пример
В следующем примере используется цикл SCAN ... ENDSCAN, выдающий на экран все компании в Швеции.
![]() | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && Opens Customer table CLEAR SCAN FOR UPPER(country) = 'SWEDEN' ? contact, company, city ENDSCAN |
Смотрите также
Справочное руководство
Команда DO CASE ... ENDCASEКоманда DO WHILE ... ENDDO
Команда FOR EACH ... ENDFOR
Команда FOR ... ENDFOR