Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Построение отчета для связанных наборов данных

При построении отчета, основанного на данных из нескольких связанных друг с другом таблиц, можно применить следующие способы:

  1. С помощью компонента Query объединить данные из нескольких таблиц в один набор данных, после чего строим отчет так же как с компонентой Table, указывая в свойстве DataSet компоненты QuickRep значение Query1.

  2. Создадим несколько наборов данных и соединяем их между собой, используя свойства MasterSource и MasterFields. Для отображения информации с этих таблиц в отчете применяем компоненты QRBand (для главной таблицы) и QRSubDetail (для подчиненной таблицы).

Пусть даны две таблицы:

  1. firma.db с полями: Tab_nom (табельный номер), Name (Имя сотрудника), Otdel (отдел), Position (должность), Salary (оклад).

  2. 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.

Для формирования отчета добавим следующие компоненты:

  1. В QuickRep1 для свойства DataSet зададим значение Table1.

  2. В QRBand1 (полоса заголовка) изменим свойство BandType на rbTitle. На этой полосе поместим QRLabel, указав строку заголовка в свойстве Caption.

  3. В QRBand2 изменим свойство BandType на rbDetail. На этой полосе поместим 4 элемента QRDBText, которые ссылаются на поля Tab_nom, Name, Position, Salary таблицы firma.db. Здесь же разместим заголовки столбцов для полей из подчиненной таблицы zarplata.db.

  4. В QRSubDetail1 изменим свойство DataSet на Table2. На этой полосе поместим 3 элемента QRDBText, которые ссылаются на поля Mounth, WorkDay, Zarplata таблицы zarplata.db.

  5. Предварительный просмотр выведет отчет о помесячной зарплате каждого сотрудника фирмы, данные о которых содержатся в таблице firma.db.

    1. Комбинированный отчет

Для создания сложного отчета, включающий в себя несколько простых отчетов, используется компонент 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, пособия на детей, и т.д.).

Создайте свой проект на одну из следующих тем (можно предложить свою тему):

  1. Составление расписания занятий

  2. Учет движения товаров в магазине

  3. Журнал учета производимой продукции

  4. Регистрация абонементов и книг в библиотеке

  5. Расчет сметы при строительстве

  6. Составление меню блюд с расчетом калорийности продуктов

  7. Регистрация в поликлинике больных на прием к лечащему врачу

  8. Расписание поездов с учетом их прибытия на каждую станцию

  9. Касса аэропорта для обслуживания пассажиров

  10. Заказ книг по «Каталогу»

  11. Учет движения товара на оптовом складе

  12. Регистрация больных при поступлении в больницу и их выбытии

  13. Подписка на газеты и журналы

  14. Прием и отправка телеграмм

  15. Прием и отправка посылок

  16. Ремонт бытовой техники

  17. Продажа компьютеров из набора комплектующих к ним

  18. Составление программы телепередач на неделю

  19. Расписание автобусов и составление путевых листов

  20. Ателье по пошиву и ремонту одежды

  21. Оплата за жилье и другие коммунальные услуги

  22. Прием абитуриентов по результатам экзаменов

  23. Учет успеваемости студентов по каждой сессии

  24. Олимпиада по зимним/летним видам спорта

  25. Учет успеваемости школьников

  26. Прием рецептов на лекарственные препараты

  27. Данные об автомобилях и их владельцев

  28. Данные о правонарушениях по вождению автомобилей

  29. Аренда автомобилей

  30. Аренда квартир

  31. Туристические путевки

  32. Телефонный справочник

  33. Оплата разговоров по тарифам сотовых телефонов

  34. Социальные работники в помощь инвалидам

  35. Детские пособия

  36. Клуб знакомств

  37. Конкурс на зачисление вакантной должности

  38. Регистрация клиентов в отеле

  39. Список зверей в зоопарке

  40. Дискография любимых артистов

При разработке проекта необходимо:

  • использовать не менее 3 таблиц, связанных друг с другом,

  • ввод и редактирование данных, поиск по запросу, сортировка и выборка (фильтрация) данных,

  • выводить не менее 2 подготовленных к печати документов одним из предложенных способов.