- •4.8 Работа с несколькими бд
- •4.8.1 Связь вида одна_запись_к_одной
- •4.8.2 Связь вида одна_запись_ко_многим
- •4.9 Команды ввода-вывода
- •4.10 Работа с переменными
- •Цикл с условием
- •5 Получение справочной информации о бд
- •6 Функции манипулирования файлами
- •2 Строковые:
- •3 Работа с датами
- •4 Функции преобразования типов
- •7 Сортировка данных
- •8 Математическая обработка бд
- •4.12 Разработка программ
- •1) Функции
- •2) Процедуры
- •3) Классы переменных
4.8.2 Связь вида одна_запись_ко_многим
Следующая команда устанавливает связь такого типа между двумя или несколькими БД:
SET SKIP TO [<область1> [,<область2>]..] . При этом с каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных <областях>.
Аппарат сцепления баз данных является мощным средством доступа к “родственным” данным.
Отмена связи: SET RELATION без параметров.
4.9 Команды ввода-вывода
Команда позиционирования на рабочем окне: @.
@<X,Y> , где X,Y - координатами точки на экране Y1,X1.
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 Работа с переменными
Операция присваивания: “=” или STORE
STORE выражение TO имена переменных.
Пример. STORE 5 TO a, b, c или a = 5.
Кроме переменных можно использовать массивы:
Операции описания массивов:
- DECLARE C[10,10]
- DIMENSION d[10]
(двумерный массив максимальная размерность, которую можно использовать в FoxPro). Нумерация начинается с 1 до N.
Команды управления
Эти команды могут быть использованы ТОЛЬКО в программах.
IF – в зависимости от условия команда выполняет те или иные <команды>, находящиеся внутри конструкции IF...ENDIF.
IF <условие>
<команды>
[ELSE
<команды>]
ENDIF
DO CASE – эта конструкция решает задачи, аналогичные команде IF, но в ней может быть указано сразу несколько условий, которые последовательно проверяются во всех фразах CASE.
Команда аналогична команде switch в Си.
Команда очень удобна для обработки выбора из меню в программах. Разрешается вложение команд DO CASE, IF.
DO CASE условие
CASE другое условие
и т.д.
OTNERWISE команды (при не выполнении ни одного из условий)
ENDCASE
Команды организации циклов
Цикл с условием
Цикл с условием выполняется до тех пор, пока <условие> истинно:
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 дней и выводит на экран.
