4.1 Создание базы данных
База данных создается с помощью Диспетчера проектов Visual FoxPro. Сначала создадим новый проект. Назовем его Kurs и разместим его в папке MyProject.
Рисунок 4.1.1 – Окно диспетчера проектов
Все компоненты, которые мы сможем создать, можно связать с проектом, при этоим они будут храниться в “родном” каталоге проекта.
Теперь можно создавать базу данных. Щелкнув правой кнопкой мыши на подраздел “Базы данных” раздела “Данные”. Необходимо ввести имя будущей базы данных. Новую базу данных сохраняем в папке проекта. После этого появляется окно Дизайнера баз данных. С его помощью можно добавлять в базу данных новые компоненты: таблицы, запросы, локальные и удаленные представления, соединения и внедренные процедуры.
Рисунок 4.1.2 – Окно Дизайнера баз данных
С помощью Дизайнера баз добавим в проект таблицу.
После присвоения имени новой таблице создаем ее структуру в соответствии с заданием. Структура таблицы представляет собой список полей и их характеристику: тип данных, размер, длину символьного представления (для типа Character) и др. В поле “Caption” можно указать надпись-заголовок столбца для каждого поля, которая будет высвечиваться при отображении таблицы.
Рисунок 4.1.5 – Создание структуры таблицы
После завершения ввода можно просмотреть полученную структуру пустой таблицы, выбрав в меню команду Browse.
Заполнить таблицу можно при помощи той же команды, если выбрать в меню “Edit” пункт “Append mode” (“Режим добавления”). Результат заполнения таблицы данными показан на рисунке 4.1.6.
Рисунок 4.1.6 – Записи таблицы Table_Goods.
4.2 Выполнение фильтрации, индексации, поиск записей
В FoxPro есть команда
SET FILTER TO <условие>,
которая позволяет установить FOR-условие для всех без исключения команд обработки данных. Здесь <условие> указывает на то, какие именно записи могут быть доступны для обработки.
Выполним фильтрацию по полю “Поставщик”. Если после этого, например, написать команду BROWSE, то это будет эквивалентно BROWSE FOR supplier=’Россия’.
Рисунок 4.2.1 – Результат фильтрации по полю supplier.
Создание индексных файлов в базах данных преследует цель ускорения поиска записей и для упорядочения записей в таблицах. Вообще в FoxPro существуют 2 типа индексных файлов: *.idx (обычный индексный файл) и *.cdx (составной индексный файл, содержащий несколько индексов). В нашем случае требуется произвести индексацию по одному полю – полю “Количество товара”, поэтому создаем обычный индексный файл indtab.idx в папке проекта с помощью команды:
INDEX on amount to C:\MY_WORKS\TRANSF~1\MYPROJ~1\indtab
Следует отметить, что такое индексирование проводится только по возрастанию. Отобразим полученный результат с помощью команды LIST
LIST amount, name_unit, price_unit
Полученный результат отображен на рисунке 4.2.1
Рисунок 4.2.1 – Результат индексирования.
Отобразим все записи о товарах низкого качества
BROWSE FOR quality_goods='низкое'
Рисунок 4.2.2 – Записи о товарах низкого качества.
Найдем номер первой из записей о товаре в количестве 10.
LOCATE FOR amount=10
Найдя запись, FoxPro установит внутренний указатель на требуемую запись, не выводя никаких сообщений. То, что запись была найдена, можно увидеть в строке состояния главного окна FoxPro.
Рисунок 4.2.3 – Строка состояния FoxPro.
Полный текст программы приведен в приложении А.
4.3 Поиск записей с помощью циклов WHILE и SCAN
Для последовательного поиска самой первой записи базы данных, удовлетворяющей заданному FOR-условию и до тех пор, пока соблюдается WHILE-условие (если есть), применяется команда LOCATE. Для продолжения поиска, начатого командой LOCATE, применяется команда CONTINUE.
Реализация итерационных циклов, т. е. циклов с заранее известным условием их окончания и неизвестным числом повторов, выполняется следующей инструкцией:
DO WHILE <условие>
<команды>
ENDDO
Для последовательного просмотра базы данных, поиска всех записей, удовлетворяющих условиям и выполнения над найденными записями каких-либо операций, служит команда SCAN.
SCAN[<границы>] [FOR <условие>]
<команды>
ENDSCAN
По заданию необходимо найти все товары, поставленные из России, а также общую стоимость всех товаров, поступивших на склад в период с 15.01.2001 по 15.03.2001. Каждый из этих запросов, в свою очередь, реализован в 2-х вариантах: с использованием цикла WHILE и с использованием цикла SCAN. Полный текст программы приведен в приложении Б, а результат работы – на рисунке 4.3.1.
Рисунок 4.3.1 – Результаты работы программы.
4.4 Построение меню и выдача сообщений
Для организации в программах POPUP-меню необходимо сначала определить параметры будущего меню с помощью команды
DEFINE POPUP <POPUP- меню>,
куда входит еще довольно много параметров. Выдача меню производится по команде
ACTIVATE POPUP <POPUP-меню>.
Для выполнения какого-либо действия при нажатии клавиши или сочетания клавиш, используется следующая команда:
ON KEY [LABEL< имя клавиши>] [команда].
По заданию требуется вывести POPUP-меню с полями Name_unit, Quality_goods, Supplier, если в таблице БД есть товары с ценой < 100 р. Кроме того, при нажатии Alt+ F1 необходимо вывести сообщение ‘Ошибка памяти’. Полный текст программы приведен в приложении В, а результат работы – на рисунках 4.4.1 и 4.4.2.
Рисунок 4.4.1 – POPUP-меню.
Рисунок 4.4.2 – Сообщение, выдаваемое по Alt+F1.
0 комментариев