Тема: Создание запросов и отчетов с помощью «Wizards», исследование словаря базы данных

Задание: создать запрос с помощью Мастера в виде таблицы и графика, создать отчет с помощью Мастера, проанализировать словарь своей базы данных.

 

Выполнение:

1. Создадим запрос с помощью Мастера в виде таблицы. На 1-м шаге в качестве источника запроса выберем таблицу sotrudniki. Шаг №2 Мастер пропускает, так как создаваемый запрос не является Cross-Tab Wizard. На 3-м шаге в качестве условия выборки назначим Мастеру выбрать информацию из таблицы о тех сотрудниках, у которых не заполнены поля «Почта» или «Дата рождения» (см.рис.7.1):

 

Рис.7.1. Создание запроса-таблицы с помощью Мастера.

 

Завершим создание запроса сохранением его в папку Query проекта. Результат выполнения данного запроса представлен на рис.7.2:

Рис.7.2. Результат выполнения запроса.

2. Создадим запрос с помощью Мастера в виде графика. В качестве источника запроса на 1-м шаге выберем таблицы sotrudniki и dolgnosty. На 2-м шаге в раздел Data Series поместим Dolg_id, в Axes – Sotr_id, учитывая, что возможно работать только с полями типа Numeric. На 3-м шаге зададим тип диаграммы – объемная столбчатая. Завершим создание запроса выбором его типа – Form - и сохранением его в папку Query проекта.

 

Рис.7.3. Результат выполнения запроса.

 

3. Чтобы полученные запросы можно было вызывать из формы, добавим на одну из ранее созданных форм две кнопки «Запрос 1» и «Запрос 2» (см.рис.7.4) и запрограммируем их следующим образом:

 

Листинг 7.1. Коды кнопок вызова запросов.

&&вызов запроса-таблицы

DO 'd:\militsina\query\SOTR_MAIL_BIRTH_BLANK.qpr'

&&вызов запроса-графика

DO FORM 'd:\militsina\forms\SOTRUDNIKI_PO_DOLGNOSTYAM'

 

Рис.7.4. Форма с кнопками вызова запросов.

 

4. Создадим с помощью Мастера отчет. На 1-м шаге в качестве источника выберем таблицу sotrudniki (все поля). На 2-м шаге определим способ группировки записей в отчете – по полю dolg_id. На 3-м шаге выберем тип оформления отчета – banded - и продолжим формирование стиля на 4-м шаге. На 5-м шаге зададим тип сортировки записей – по полю dolg_id и sort_id. Завершим создание отчета сохранением его в папку проекта Reports. Результат выглядит следующим образом (см.рис.7.5):

 

Рис.7.5. Отчет, созданный Мастером.

 

5. Исследуем контейнерный файл базы данных создаваемого курсового проекта. Для этого откроем из папки проекта файл course_data.dbc командой USE <путь к файлу>, затем – BROWSE, при этом все файлы проекта закрыты (см.рис.7.6). В результате анализа словаря базы данных можно заключить следующее:

А) Общее количество объектов базы данных – 147

Б) Каждый объект имеет имя и тип (база, таблица, индекс и др.)

В) Каждый объект имеет «родителя»: таблица – базу данных, к которой она принадлежит, поле или индекс – таблицу, в которой содержится; примечательно, что поле, являющееся в таблице первичным или вторичным ключом, отображается в словаре дважды – как обычное поле и как индекс.

Рис.7.6. Содержимое файла course_data.dbc.

 

ЛАБОРАТОРНАЯ РАБОТА №8.

Тема: SQL – запросы.

 

Задание: ознакомиться с синтаксисом SQL-запросов, сформировать базу данных для своего проекта (таблицы должны быть в НФБК или 4 НФ).

1. Сформулировать и реализовать запросы следующих типов:

а) сравнение условий поиска

б) сложные условия поиска

в) диапазон (BETWEEN)

г) условие поиска с проверкой вхождения во множество ([NOT]IN)

д) условие поиска с указанием шаблонов (LIKE/ NOT LIKE)

2. Сформулировать и реализовать запросы следующих типов:

а) сортировка по значению одного столбца

б) сортировка по нескольким столбцам

в) условия для вычисления полей

г) условие, которое позволяет выполнить группировку по каким–либо критериям

3. Сформулировать и реализовать запросы следующих типов:

а) условие вычисление среднего значения для вашего столбца (может быть для зарплаты, количества и т.п.);

б) условие для счета количества строк;

в) условие для определения максимального значения;

г) условие для определения минимального значения;

д) условие для выполнения суммирования значений

4. Сформулировать и реализовать запросы следующих типов:

а) условие для вашего ограничения

5. Сформулировать и реализовать запросы следующих типов:

а) подзапрос для проверки неравенств;

б) подзапрос с использованием предиката IN

6. Создать подзапрос с использованием ключевых слов ANY или ALL

7. Создать простое соединение таблиц

8. Создать условия для объединения результатов выборки

 

Выполнение:

1. Разместим на предварительно созданную форму «Запросы» 20 надписей Label и 2 объекта CommandGroup - по 10 кнопок каждый (см.рис.8.1). Также добавим на форму элемент OptionGroup, который позволит пользователю управлять первым запросом. Все кнопки запрограммируем таким образом, чтобы при нажатии они выдавали результаты прописанного в коде SQL-запроса без сохранения их в другую таблицу (см.листинги 8.1-8.20).

 

Рис.8.1. Форма «Запросы» в режиме Конструктора.

 

Листинг 8.1. Запрос 1.

IF thisform.optiongroup1.option1.Value = 1

SELECT film_id, fname, price ;

from films ;

where price > 220;

ELSE

SELECT film_id, fname, price ;

from films ;

where price < 220;

ENDIF

 

Листинг 8.2. Запрос 2.

SELECT film_id, fname, price ;

from films ;

where country_pr = "Россия";

 

Листинг 8.3. Запрос 3.

SELECT film_id, fname, price, country_pr ;

from films ;

where (country_pr like 'США') AND (price > 220) ;

 

Листинг 8.4. Запрос 4.

SELECT film_id, fname, price ;

from films ;

where price between 220 AND 240;

 

Листинг 8.5. Запрос 5.

SELECT firstname, midname, lastname, birth_date ;

FROM clients ;

WHERE ALLTRIM(midname) in ('Иван','Владислав');

 

Листинг 8.6. Запрос 6.

SELECT emp_id, firstname, midname, lastname ;

FROM workers ;

WHERE firstname like 'М%' ;

 

 

Листинг 8.7. Запрос 7.

SELECT login, password ;

FROM access_table;

ORDER BY login DESC ;

 

Листинг 8.8. Запрос 8.

SELECT film_id, fname, price, genre_id ;

FROM films ;

ORDER BY genre_id ASC, price DESC ;

 

Листинг 8.9. Запрос 9.

SELECT cl_id, firstname + midname + lastname as FIO, birth_date ;

FROM clients ;

 

Листинг 8.10. Запрос 10.

select firstname, midname, lastname ;

from workers ;

where firstname like 'М%' ;

union (select firstname, midname, lastname ;

from clients ;

where firstname like 'М%' )

 

Листинг 8.11. Запрос 11.

SELECT AVG(price) as AVGprice ;

FROM films;

 

Листинг 8.12. Запрос 12.

SELECT COUNT(*) as ClientsRowQuantity ;

FROM clients ;

 

Листинг 8.13. Запрос 13.

SELECT MAX(price) as MAXprice ;

FROM films ;

 

Листинг 8.14. Запрос 14.

SELECT MIN(price) as MINprice ;

FROM films ;

 

Листинг 8.15. Запрос 15.

SELECT SUM(all price) as SUMprice ;

FROM films ;

 

Листинг 8.16. Запрос 16.

SELECT A.pos_id, COUNT(A.emp_id) as QuantityOfWorkes ;

FROM workers A ;

GROUP BY A.pos_id ;

HAVING A.pos_id = 8 ;

 

Листинг 8.17. Запрос 17.

SELECT emp_id, firstname, midname, lastname, pos_id ;

FROM workers ;

WHERE pos_id = (select pos_id ;

FROM positions ;

WHERE ALLTRIM(position) = 'Менеджер' ) ;

 

Листинг 8.18. Запрос 18.

SELECT genre as GenreFromUSA ;

FROM genres ;

WHERE genre_id in (SELECT distinct genre_id ;

FROM films ;

WHERE country_pr like 'США');

 

Листинг 8.19. Запрос 19.

SELECT film_id, fname, price ;

FROM films ;

WHERE price > any ( select price ;

FROM films ;

WHERE country_pr = 'США' );

 

Листинг 8.20. Запрос 20.

SELECT film_id, fname, a.genre_id, genre ;

FROM films a, genres b ;

WHERE a.genre_id = b.genre_id ;

 

Заключение

В результате выполнения данного комплекса лабораторных работ мною были приобретены такие навыки работы с СУБД, как создание таблиц, объединение их в базу данных, установление связей между таблицами, проектирование графического интерфейса проекта с использованием базовых классов СУБД, разработка библиотек пользовательских классов, организация взаимодействия объектов различных классов, программирование процесса идентификации пользователя, создание запросов и отчетов с помощью Мастера и Конструктора, написание SQL-запросов. Комплекс лабораторных работ позволил создать основу для курсового проекта по дисциплине «Базы данных».

 

Список литературы:

1. FoxPro Tutorial http://www.yaldex.com/fox_pro_tutorial

2. Справка по языку Fox Pro http://www.firststeps.ru/foxpro/helpfox/helpfox1.html

3. Форум на сайте FoxPro Club http://forum.foxclub.ru

4. Клепинин В.Б., Агафонова Т.П. Visual FoxPro 9.0.– СПб.: изд. BHV, 2007. http://www.foxclub.ru/vfpbook/

5. Сайт Базы данных http://li.romab.ru/t_pers_db_4.html

6. Статья «Visual Foxpro : Иллюстрированный самоучитель» http://programming-lang.com/html/foxpro_7/index.html