- •«Национальный исследовательский томский политехнический университет»
- •Работа с данными в среде FoxPro
- •Создание программных продуктов
- •Главное меню субд
- •Меню FoxPro для dos
- •Главное окно и меню FoxPro дляWindows.
- •Знаки операций
- •Структура команд
- •Создание структуры файла
- •Заполнение базы данных
- •Дополнение бд
- •Фильтрация данных
- •Последовательный поиск
- •Продолжение поиска
- •Понятие о рабочих областях
- •Связь вида одна_запись_к_одной
- •Связь вида одна_запись_ко_многим
- •Цикл с условием
- •Цикл с параметром
- •Цикл сканирования базы данных
- •Математические функции
- •Математическая обработка бд
- •Вывод текстовых файлов
- •Создание баз данных
- •Дополнение базы
- •Формирование запросов из базы данных (команда select)
Понятие о рабочих областях
В FoxPro можно обрабатывать сразу несколько файлов БД (до 25). Каждый такой файл типа DBF и все вспомогательные файлы (например, индексные) открываются в своей отдельной рабочей области. Переход из области в область осуществляется командой SELECT <рабочая область>. Первые 10 рабочих областей идентифицируются номерами 1-10 или буквами A – J. Области с 11-й по 25-ю обозначаются номерами или буквенно-цифровыми именами W11 – W25. Если в качестве параметра указать цифру 0, произойдет переход в первую свободную рабочую область.
Область, в которой мы находимся в данный момент, называется активной рабочей областью, и в ней можно работать с находящейся здесь базой данных, используя все допустимые команды системы. Одновременно даже в одной команде можно иметь доступ (с некоторыми ограничениями) к полям других баз. В этом случае имя поля из неактивной области – составное. Собственно имени поля тогда предшествует имя рабочей области, разделенные знаками “->” или (что более удобно) точкой: A->name или A.name . При входе в СУБД активизируется область 1 (или А), и, если Вы работаете только с одной базой, заботиться об открытии областей не нужно.
Связь вида одна_запись_к_одной
SET RELATION TO ... (см.Помощь) связывает указатель записей в активной рабочей области с указателями записей из других рабочих областей, имена которых указаны после слова INTO, по заданному общему полю (ключу). Единственное условие – файл, с которым устанавливается связь, должен быть проиндексирован по этому полю.
П р и м е р:
SELECT a
USE brig1
SELECT b
USE kadr
INDEX ON tab TO kadrtab && (проиндексировать активную БД по полю tab, создать файл kadrtab.idx)
SELECT a
SET RELATION TO tab INTO b && (установить связь по полю tab с рабочей областью b)
LIST tab, vir, b.fam
Здесь выводятся записи файла brig1.dbf, в которые включено поле соответствующих им фамилий kadr.dbf (b.fam). Связь между всеми файлами разрывается командой SET RELATION TO без параметров.
Связь вида одна_запись_ко_многим
Следующая команда устанавливает связь такого типа между двумя или несколькими БД:
SET SKIP TO [<область1> [,<область2>]..] . При этом с каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных <областях>.
Аппарат сцепления баз данных является мощным средством доступа к “родственным” данным.
СОЗДАНИЕ КОМАНДНЫХ ФАЙЛОВ
Программы, ориентированные на прямое программирование процессов обработки данных, создаются, например, с помощью внутреннего встроенного текстового редактора FoxPro, вызываемого командой MODIFY COMMAND/FILE ... (см. Помощь). Если используется вариант MODIFY COMMAND, по умолчанию вновь создаваемый файл считается командным (программным) файлом и ему присваивается расширение PRG, если оно не задано явно.
Созданная в редакторе программа запоминается указанном в команде файле и может быть в дальнейшем вызвана на исполнение командой DO <имя командного файла>. Расширение PRG указывать не обязательно.
Полное меню редактора можно увидеть, выбрав позицию Edit в главном меню FoxPro.
Команды ввода-вывода
Используя команды FoxPro, можно прибегнуть к индивидуальному определению места и формы предъявления данных для каждого поля/переменной, использовав специальные команды ввода/редактирования.
CLEAR – команда очистки экрана, освобождает весь экран/окно от имеющейся информации и устанавливает курсор в левый верхний угол экрана/окна.
@<Y1,X1> [CLEAR/CLEAR TO <Y2,X2>] – команда очищает в окне/экране прямоугольник с координатами верхнего левого угла Y1,X1 и нижним правым углом окна/экрана (если указана опция CLEAR) или произвольными координатами Y2,X2 нижнего правого угла.
@...SAY...GET – команда ввода-вывода. Она используется для форматированного ввода-вывода данных на экран/принтер (см.Помощь).
Команды @...GET позволяют осуществить только предъявление данных. Наделение GET-полей аппаратом редактирования и фактическое запоминание экранных образов данных в полях/переменных осуществляются другой командой: READ, которая стоит обычно всегда вслед за командой/командами @...GET.
Самостоятельно познакомьтесь с командами вывода ?/??, TEXT, \ и \\, а также командами ввода INPUT и ACCEPT.
Работа с переменными
В FoxPro разрешается иметь переменные тех же типов, что и поля. Переменным и массивам переменных даются имена по тем же правилам, что и полям.
Команда присваивания. <переменная>=<выражение> или STORE <выражение> TO <имена переменных> – эти команды создают переменные и присваивают им значения. Вторая форма команды предпочтительнее в случае, если нужно одно и то же значение присвоить сразу нескольким переменным.
Тип переменной определяется типом последнего присваиваемого ей выражения!!! Символьные константы должны быть взяты в апострофы, кавычки или квадратные скобки.
Объявление массивов: DIMENSION d(10).
Команды управления
Команды управления, как Вам известно, являются важнейшим средством построения программ. Эти команды могут быть использованы ТОЛЬКО в программах.
IF – в зависимости от условия команда выполняет те или иные <команды>, находящиеся внутри конструкции IF...ENDIF.
IF <условие>
<команды>
[ELSE
<команды>]
ENDIF
Работает так же, как и в Фортране, и в Си. IF – он и в Африке IF.
DO CASE – эта конструкция решает задачи, аналогичные команде IF, но в ней может быть указано сразу несколько условий, которые последовательно проверяются во всех фразах CASE.
Команда аналогична команде switch в Си.
Команда очень удобна для обработки выбора из меню в программах. Разрешается вложение команд DO CASE, IF.