- •Базы данных.
- •Проектирование базы данных
- •Шаги проектирования базы данных
- •Создание таблиц базы данных
- •Компоненты для работы с бд
- •Создание простейшего приложения
- •Режимы наборов данных
- •Команды навигации
- •Визуальные компоненты для работы с данными
- •Обзор компонент
- •Работа с полями таблицы
- •Создание статических полей
- •Задание ограничений на вводимые значения
- •Компонент Table
- •Сортировка и фильтрация
- •Поиск записей
- •If Table1.Locate ('Number',123,[]) {опции поиска отключены}
- •If not Table1.FindKey([EditGroup.Text,EditName.Text]){ищем соответствующие значения}
- •Связывание таблиц
- •Компонент Query
- •Чтение данных из таблиц (select)
- •Модификация записей (update, insert, delete)
- •Insert into Tovar.Db (Name, Price, Count) values (’Яблоки’, 20, 10)
- •Некоторые функции языка sql
- •Компоненты для построения отчетов
- •Основные свойства компоненты QuickRep
- •Методы компоненты QuickRep:
- •Свойства компоненты qrBand:
- •Создание простого отчета
- •Включение выражений в отчет
- •Отображение системной информации
- •Группировка данных в отчете
- •Построение отчета для связанных наборов данных
- •Комбинированный отчет
- •Упражнения:
-
Построение отчета для связанных наборов данных
При построении отчета, основанного на данных из нескольких связанных друг с другом таблиц, можно применить следующие способы:
-
С помощью компонента Query объединить данные из нескольких таблиц в один набор данных, после чего строим отчет так же как с компонентой Table, указывая в свойстве DataSet компоненты QuickRep значение Query1.
-
Создадим несколько наборов данных и соединяем их между собой, используя свойства MasterSource и MasterFields. Для отображения информации с этих таблиц в отчете применяем компоненты QRBand (для главной таблицы) и QRSubDetail (для подчиненной таблицы).
Пусть даны две таблицы:
-
firma.db с полями: Tab_nom (табельный номер), Name (Имя сотрудника), Otdel (отдел), Position (должность), Salary (оклад).
-
zarplata.db: Nomer (порядковый номер записи), Tab_nom (табельный номер сотрудника), Mounth (месяц), WorkDay (количество отработанных дней), Zarplata (выплаченная зарплата).
Эти таблицы имеют между собой отношение один-ко-многим по полю Tab_nom.
Создадим новую форму Form2. Для таблицы firma.db используем компоненту Table1, для zarplata.db - Table2. Добавим компоненту DataSource, связанную с Table1. Для установления связи для Table2 в свойствах MasterSource и MasterFields установим связь с полем Tab_nom из таблицы Table1.
Для формирования отчета добавим следующие компоненты:
-
В QuickRep1 для свойства DataSet зададим значение Table1.
-
В QRBand1 (полоса заголовка) изменим свойство BandType на rbTitle. На этой полосе поместим QRLabel, указав строку заголовка в свойстве Caption.
-
В QRBand2 изменим свойство BandType на rbDetail. На этой полосе поместим 4 элемента QRDBText, которые ссылаются на поля Tab_nom, Name, Position, Salary таблицы firma.db. Здесь же разместим заголовки столбцов для полей из подчиненной таблицы zarplata.db.
-
В QRSubDetail1 изменим свойство DataSet на Table2. На этой полосе поместим 3 элемента QRDBText, которые ссылаются на поля Mounth, WorkDay, Zarplata таблицы zarplata.db.
-
Предварительный просмотр выведет отчет о помесячной зарплате каждого сотрудника фирмы, данные о которых содержатся в таблице firma.db.
-
Комбинированный отчет
Для создания сложного отчета, включающий в себя несколько простых отчетов, используется компонент QRCompositeReport. Объединение отчетов осуществляется в его обработчике события OnAddReports путем добавления названий соответствующих отчетов в список свойства Reports этой компоненты. Например, для приведенных в примере №4 и №5 отчетов сформируем сводный отчет на Form3, который будет содержать необходимые компоненты.
Procedure Tform3.QRCompositeReport1AddReports
(Sender:Tobject);
Begin
QRCompositeReport1.Reports.Add(Form1.QuickRep1);
QRCompositeReport1.Reports.Add(Form2.QuickRep1);
End;
Для предварительного просмотра используем метод Preview для компоненты QRCompositeReport1.
Упражнения:
Перед началом работы необходимо проделать предварительную работу, которая включает в себя следующее:
-
определение структуры каждой таблицы: поля, типы данных, ключевые поля и связи между таблицами;
-
определение интерфейса программы: вид форм, используемые компоненты и события, связи между компонентами.
Программа должна выполнять следующие действия:
-
смена таблиц через меню, вкладки или переключение форм
-
добавление записей в таблицы с помощью компонент с вкладки Data Control,
-
удаление и редактирование записей по поиску или по запросу,
-
отслеживание некорректно вводимых данных,
-
вычисление значений для полей по заданным формулам, если таковые присутствуют
-
сортировка и фильтрация по выбранным полям,
-
вывод простого и сгруппированного отчетного документа.
Например, для разработки приложения по начислению заработной платы можно предложить следующие наброски для разработки такой СУБД:
Данные для таблиц: список сотрудников (ФИО, пол, возраст, адрес, паспорт, ИНН, пенсионное, полис, список детей, образование, должность, разряд, отдел, общий стаж, стаж на этом месте работы, оклад), список выходов на работу.
Программа должна: позволять редактировать данные о сотрудниках, начислять зарплату (по формуле задаваемой по шаблону и зависящей от атрибутов сотрудника), выдавать справку о зарплате за определенный период, начислять премию по различным критериям (Если стаж>N, оклад<M, возраст<L, пособия на детей, и т.д.).
Создайте свой проект на одну из следующих тем (можно предложить свою тему):
-
Составление расписания занятий
-
Учет движения товаров в магазине
-
Журнал учета производимой продукции
-
Регистрация абонементов и книг в библиотеке
-
Расчет сметы при строительстве
-
Составление меню блюд с расчетом калорийности продуктов
-
Регистрация в поликлинике больных на прием к лечащему врачу
-
Расписание поездов с учетом их прибытия на каждую станцию
-
Касса аэропорта для обслуживания пассажиров
-
Заказ книг по «Каталогу»
-
Учет движения товара на оптовом складе
-
Регистрация больных при поступлении в больницу и их выбытии
-
Подписка на газеты и журналы
-
Прием и отправка телеграмм
-
Прием и отправка посылок
-
Ремонт бытовой техники
-
Продажа компьютеров из набора комплектующих к ним
-
Составление программы телепередач на неделю
-
Расписание автобусов и составление путевых листов
-
Ателье по пошиву и ремонту одежды
-
Оплата за жилье и другие коммунальные услуги
-
Прием абитуриентов по результатам экзаменов
-
Учет успеваемости студентов по каждой сессии
-
Олимпиада по зимним/летним видам спорта
-
Учет успеваемости школьников
-
Прием рецептов на лекарственные препараты
-
Данные об автомобилях и их владельцев
-
Данные о правонарушениях по вождению автомобилей
-
Аренда автомобилей
-
Аренда квартир
-
Туристические путевки
-
Телефонный справочник
-
Оплата разговоров по тарифам сотовых телефонов
-
Социальные работники в помощь инвалидам
-
Детские пособия
-
Клуб знакомств
-
Конкурс на зачисление вакантной должности
-
Регистрация клиентов в отеле
-
Список зверей в зоопарке
-
Дискография любимых артистов
При разработке проекта необходимо:
-
использовать не менее 3 таблиц, связанных друг с другом,
-
ввод и редактирование данных, поиск по запросу, сортировка и выборка (фильтрация) данных,
-
выводить не менее 2 подготовленных к печати документов одним из предложенных способов.