Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
70
Добавлен:
30.05.2015
Размер:
110 Кб
Скачать

4.8.2 Связь вида одна_запись_ко_многим

Следующая команда устанавливает связь такого типа между двумя или несколькими БД:

SET SKIP TO [<область1> [,<область2>]..] . При этом с каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных <областях>.

Аппарат сцепления баз данных является мощным средством доступа к “родственным” данным.

Отмена связи: SET RELATION без параметров.

4.9 Команды ввода-вывода

Команда позиционирования на рабочем окне: @.

@<X,Y> , где X,Y - координатами точки на экране Y1,X1.

  1. CLEAR – команда очистки экрана.

@ X,Y CLEAR – очистит область экрана, начинающуюся с позиции X, Y.

2) CLEAR TO – очищает определенный участок экрана.

@ X1,Y2 (координаты верхнего левого угла) CLEAR TO X2,Y2 (координаты правого нижнего угла).

3) SAY – команда форматированного ввода-вывода данных на экран/принтер.

Примерю. SAY описание данных COLOR цвет.

Если сложное выражение, то все его нужно перевести к одному типу:

@ 4,8 SAY ‘номер-‘ + Ster (x,1) (преобразует числовое значение x в символьное).

4) GET переменная/поле – ввод данных. Данная команда выведет поле, для ввода данных .а также их редактирования. (всего 24 строки, 80 позиций в строке).

Пример. @ 2,4 GET f (имя поля) COLOR цвет

Наделение GET-полей аппаратом редактирования и фактическое запоминание экранных образов данных в полях/переменных осуществляются другой командой: READ, которая стоит обычно всегда вслед за командой/командами @...GET.

Функции контроля за позицией указателя:

ROW() – возвращает номер строки, COL() - возвращает номер колонки.

4.10 Работа с переменными

  1. Операция присваивания: “=” или STORE

STORE выражение TO имена переменных.

Пример. STORE 5 TO a, b, c или a = 5.

Кроме переменных можно использовать массивы:

Операции описания массивов:

- DECLARE C[10,10]

- DIMENSION d[10]

(двумерный массив максимальная размерность, которую можно использовать в FoxPro). Нумерация начинается с 1 до N.

  1. Команды управления

Эти команды могут быть использованы ТОЛЬКО в программах.

IF – в зависимости от условия команда выполняет те или иные <команды>, находящиеся внутри конструкции IF...ENDIF.

IF <условие>

<команды>

[ELSE

<команды>]

ENDIF

DO CASE – эта конструкция решает задачи, аналогичные команде IF, но в ней может быть указано сразу несколько условий, которые последовательно проверяются во всех фразах CASE.

Команда аналогична команде switch в Си.

Команда очень удобна для обработки выбора из меню в программах. Разрешается вложение команд DO CASE, IF.

DO CASE условие

CASE другое условие

и т.д.

OTNERWISE команды (при не выполнении ни одного из условий)

ENDCASE

  1. Команды организации циклов

Цикл с условием

Цикл с условием выполняется до тех пор, пока <условие> истинно:

DO WHILE <условие>

<команды>

ENDDO

Если требуется выйти за пределы цикла, необходимо использовать команду EXIT, которая передаст управление команде, следующей за ENDDO. Команда LOOP осуществляет передачу управления в цикле, но в противоположную сторону – в его начало, на саму команду цикла. Это нужно, чтобы при необходимости избежать выполнения некоторых команд, предшествующих фразе END, и сразу перейти к следующему циклу.

Пример. Пусть в массиве V – хранятся данные о дневной выработке продукции. Необходимо подсчитать сумму выработки продукции от начала месяца.

T_day=Day(Date()) (day– день от начала месяца,date– текущая дата)

Den = 1

Sum=0

Do while Den < T_day

Sum = sum+V[Den]

Den=Den+1

ENDDO

Цикл с параметром

FOR <переменная>=<вырN1> TO <вырN2> [STEP <вырN3>]

<команды>

ENDFOR

Цикл аналогичен оператору for Си.

Цикл сканирования базы данных

Цикл сканирования базы данных применяется для перемещения в базе данных и выполнения <команд> для каждой встреченной записи, которая отвечает условиям.

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

<команды>

ENDSCAN

При отсутствии границ и условий сканируется вся БД.

Пример

For i =1 To Reccount()

Go i

или по другому

scan ALL

Endscan

4.11 Встроенные функции

1 Математические:

ABS() – модуль числа;

INT () – округляет до целого;

MAX() – вычисляет максимальное значение из списка переменных;

MIN() – вычисляет максимальное значение из списка переменных;

ROUND (выражение 1, Выражение 2) – округляет выражение 1 до количества значков после запятой, соответствующих выражению 2;

Round (x,2) – x округляется до 2 знака после запятой;

Rand() – случайное число;

Sign() – возвращает знак числа;

EXP(), LOG(), LOG10(); SQRT(); SIN(); ASIN(); TAN(); ACOS(); ATAN(); CELLING(выражение) – округляет до целого (ближайшего большего).

BETWEEN(выражение 1, выражение 2, выражение 3) – возвращает истинное значение .T., если выражение 1 больше или равно выражение 2 и меньше или равно выражения 3. в противном случае функция возвращает ложь .F.. Все три выражения должны быть одного типа.

Пример

Use AAA

Scan For Between (inv_data+30, DATE(), DaTE()+30)

? “Выслать напоминание об оплате фирме” + company

ENDSCAN

Из БД выбираются записи, у которых дата выплаты долга просрочена, но не более чем на 30 дней и выводит на экран.