Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
inform sistem.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.22 Mб
Скачать

4. Циклы в foxpro while, for, scan

Цикл с условием (цикл WHILE). Имеет вид:

DO WHILE <условие>

<команды тела цикла >

ENDDO

Команды тела цикла выполняются, пока выполняется <условие>.

В языке FoxPro нет меток, следовательно, нет команд перехода на помеченную команду. Поэтому, если нужно досрочно выйти из тела любого цикла, то необходимо выполнить команду

EXIT ['eksit] - выход.

По этой команде управление передается команде следующей за ENDDO. Пример:

а=1

do while .t.

а=а+1

? а

if a=100

exit

endif

enddo

Кроме EXIT существует команда LOOP [lu:p] - делать петлю, которая передает управление на саму команду цикла, что позволяет не выполнять ряд команд перед ENDDO.

Цикл с параметром (Цикл FOR). Имеет вид:

FOR<переменная>=<ВырN1>ТО<ВырN2>[STEP <ВырN3>]

<команды тела цикла>

ENDFOR

Этот цикл работает как в БЕЙСИКе. Вместо ENDFOR можно писать NEXT.

Цикл сканирования базы данных (цикл SCAN). Имеет вид:

SCAN [<границы>] [FOR <условие>] [WHILE <условие>]

<команды тела цикла>

ENDSCAN

Команды тела цикла выполняются для каждой записи входящей в границы и удовлетворяющей условиям. Пример выдачи информации об учениках с фамилией на букву А:

USE SCOIA

SCAN FOR FAM='A'

? FAM, KLASS, DR , WES, ROST

ENDSCAN

USE

5 Структура команд субд FoxPro

Команды FoxPro по обработке файлов базы данных имеют в общем случае следующий вид:

<Название> [<границы>][FOR <условие1>][WHILE <условие2>][<другие параметры>]

Здесь

<Название> - имя команды,

<границы> - такие границы действия команды как

ALL - все записи базы данных;

REST - все записи, начиная с текущей, до конца БД;

NEXT n - следующие n записей, начиная с текущей;

RECORD n - запись с номером n.

FOR <условие1> - выполнение команды только для записей, отвечающим <условию1>.

WHILE <условие2> - выполнение команды пока не перестанет выполняться <условие2>. При этом, если в команде присутствует еще и FOR-условие, то действие по WHILE-условию главнее. Параметры команды (опции) могут идти в произвольном порядке.

Команды вывода list и display

Команда LIST без параметров выдает на экран содержимое всех записей базы данных, а команда DISPLAY только текущую запись. Если указаны границы или заданы условия, то обе команды выдают одинаковый объем информации. Правда, команда DISPLAY делает вывод постранично, а LIST выдает всю информацию, не останавливаясь. Общий вид запишем для LIST (для DISPLAY такой же):

LIST [<границы>][<поля>][WHILE <условие>][FOR <условие>][OFF][ TO РRINT /TO FILE<файл>]

Здесь параметр <поля> - имена полей записи БД через запятую - задает вывод содержимого только указанных полей. При отсутствии этого параметра выдаются значения всех полей.

OFF - номера записей выдаваться не будут.

ТО PRINT - вывод на принтер.

ТО FILE <файл> - вывод в указанный <файл>.

Для подавления выдачи на экран заголовка из имен полей надо заранее выполнить установочную команду SET HEADING OFF. Здесь HEADING ['hediq] - заголовок.

Примеры. Пусть база данных SCOLA.DBF имеет записи с полями FAM, KLASS, DR, WES, ROST. Тогда:

1. Команда DISPLAY FAM,ROST FOR KLASS='5A ' - выведет на экран фамилии и рост учеников 5А класса.

2. Команда LIST KLASS,FAM FOR DR ={05.12.97} - выведет на экран номер класса и фамилию тех учеников, кто родился 5 декабря 1997 года.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]