Лекция 6.3. Примеры создания отчетов
В предыдущих лекциях были рассмотрены основные компоненты необходимые для создания отчетов средствами генератора QuickReport. Теперь выполним создание отчетов различной сложности на основе БД DBDEMOS, входящей в поставку Delphi.
Создание простейшего отчета
В самом простом случае, когда необходимо представить информацию из БД в виде обычной таблицы, достаточно использовать только несколько основных полос отчета: ColumnHeader (для отображения заголовка таблицы) и Detail (для отображения данных таблицы)
Для реализации этого выполните следующие действия:
1. Создайте форму приложения.
2. Поместите на форму компонент TQuickRep. Местоположение компонента на форме не имеет никакого значения.
3. Поместите на главную форму компонент класса TTable.
4. Свяжите компонент QuickRep1 через свойство DataSet с НД - Table1.
5. Свяжите компонент с БД DBDEMOS, через раскрывающийся список свойства DatbaseName.
6. Выполните подключение таблицы НД к таблице Country.db, через свойство TableName. Присвойте свойству Active значение true.
7. Присвойте свойству DataSet компонента QuickRepl значение Tablel.
8. В инспекторе объектов раскройте свойство Bands компонента QuickRepl, для чего щелкните на значке «+», расположенном слева от названия свойства. Затем установите в раскрывшемся списке значение свойства HasColumnHeader и HasDetail в true. После этого в отчете появится полосы ColumnHeader и Detail.
9. В область ColumnHeader поместите два компонента TQRLabel, необходимых для отображения подписей столбцов.
10. Присвойте значения компонентам:
ü QRLabel1.Caption – Столица
ü QRLabel1.Caption – Население
11. В область Detail поместите два компонента TQRDBText, необходимых для отображения значений соответствующих полей.
12. Подключите компоненты TQRDBText к НД, для этого, удерживая клавишу Shift, выделите компоненты TQRDBText и установите свойство DataSet в значение Table1.
13. Укажите имена полей значения которых должны отображаться в соответствующих столбцах, для этого присвойте следующие значения свойствам компонентов:
ü QRDBText1.DataField – Name;
ü QRDBText1.DataField – Population.
Рисунок 6.3.1 - Внешний вид отчета в среде разработки Delphi
14. Для просмотра получившегося отчета можно выполнить команду контекстного меню Preview (рисунок 6.3.2).
15. Для вывода отчета в приложении создайте обработчик события OnCreate формы и впишите в него следующий код:
QuickRep1.Preview; // вызов окна предварительного просмотра отчета
Application.Terminate; //закрытие приложения
16. Выполните компиляцию и тестирования приложения. Результат тестирования должен быть таким же (см. рисунок 6.3.2).
Рисунок 6.3.2 - Окно предварительного просмотра созданного отчета
Группирование в отчете
Для реализации группировки в отчете прежде всего необходимо позаботиться о том, чтобы НД был отсортирован по полю группировки. Для сортировки в НД типа TTable можно использовать соответствующие индексы, а при использовании компонентов класса TQuery сортировка выполняется с использованием конструкции Order By.
Пусть необходимо создать отчет по таблице Country с группировкой по географическому положению, с подсчетом населения и площади соответствующих континентов. Для создания отчета выполните следующие действия:
1. Создайте главную форму приложения.
2. Расположите на форме компонент TQuery.
3. Подключите компонент Query1 к БД DBDEMOS и в свойство SQL запишите следующий текст запроса:
SELECT * FROM Country
ORDER BY Continent
4. Присвойте свойству Active значение true. Можно считать, что НД уже подготовлен.
5. Поместите на форму компонент класса TQuickRep и подключите его к НД, через свойство DataSet.
6. Через свойство Bands компонента QuickRep1 создайте полосы отчета ColumnHeader и Detail.
7. Настройте свойство Font полосы отчета ColumnHeader, в дальнейшем, все расположенные на нем компоненты унаследуют значение этого свойства.
8. В полосе отчета ColumnHeader разметите пять компонентов TQRLabel, которые будут использоваться в качестве подписей полей.
9. Присвойте свойствам Caption компонентов TQRLabel значения: «Страна», «Столица», «Континент», «Площадь», «Население».
10. Разметите в полосе Detail пять компонентов класса TQRDBText и свяжите их с НД через свойство DataSet (выделив их вместе).
11. Для каждого компонента класса TQRDBText определите поле, значения которого в нем будут отображаться (Name, Capital, Continent, Area, Population).
12. Выполните промежуточную проверку правильности созданного отчета командой контекстного меню Preview компонента QuickRep1. Результат должен быть похож на рисунок 6.3.2, за исключением состава полей и положения отсортированных записей.
Рисунок – 6.3.3. Определение выражения группировки
13. Для реализации группировки добавьте на компонент QuickRep1 две полосы QRBand и QRGroup из палитры компонентов, для первой, сразу, определите свойство BandType, выбрав из раскрывающегося списка значение rbGroupFooter. Теперь в отчете имеется две полосы GroupFooter (примечание группы) и GroupHeader (заголовок группы).
14. Свяжите полосу GroupHeader с полосой GroupFooter через свойство FooterBand.
15. Свяжите полосу GroupHeader c полосой Detail через свойство LinkBand.
16. Для полосы GroupHeader определите значение свойства Expression, в нем необходимо указать поле группировки, в нашем случае это поле Continent (рисунок 6.3.3).
Рисунок – 6.3.4. Примерный вид отчета с группировкой по континентам
17. Определите свойства Font для заголовка и примечания группы, например, для заголовка группы установите шрифт 12 pt, полужирный, а для примечания группы установите шрифт 10 pt, также полужирный.
18. В полосе заголовка группы разметите компонент класса TQRDBText и свяжите его с НД.
19. Установите значение свойства DataField компонента TQRDBText равным Continent. Можно считать, что подготовка заголовки группы на этом закончена.
20. Разместите в полосе примечания группы компонент класса TQRLabel (для вывода текста «Всего:») и два компонента класса TQRExpr для подсчета населения и площади соответствующих континентов.
21. Для подсчета населения установите значение свойства Expression компонента QRExpr1 равным SUM(Query1.Population), возможен непосредственный ввод или через построитель выражений.
22. Для расчета суммарной площади установите значение свойства Expression компонента QRExpr2 равным SUM(Query1.Area).
23. Для вывода отчета в приложении создайте обработчик события OnCreate формы и впишите в него следующий код:
QuickRep1.Preview;
Application.Terminate;
24. Выполните компиляцию и тестирования приложения. Примерный вид отчета изображен на рисунке 6.3.4
Вопросы для самоконтроля
1. Какие компоненты необходимы для создания простого отчета?
2. Как компоненты отчета соединяются с НД?
3. Как просмотреть отчет, не запуская приложения?
4. Как программно вызвать окно просмотра отчета?
5. Какие компоненты необходимы для группирования в отчете?
6. Как указать поле группировки?
7. Как подсчитать итоги по группе?
8. Какие средства позволят реализовать сетку в таблице отчета?
Еще по теме Лекция 6.3. Примеры создания отчетов:
- Практические задачи по теме: «КД по закупкам товаров (сырья, материалов) на предприятии».
- Маркетинговые характеристики бренда.
- 3. Деление права на писаное и неписаное. Закон как источник РП.