Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_Generator_otchetov_lektsia.doc
Скачиваний:
14
Добавлен:
25.08.2019
Размер:
361.47 Кб
Скачать

5. Типы отчетов

При помощи набора компонентов QuickReport можно создавать самые разнообразные отчеты. Самые простые отчеты могут вообще не иметь полосу данных Detail, ограничиваясь отображением значений нескольких полей связанного набора данных. К этой же категории можно отнести отчеты, представляющие данные в виде таблицы. Структура таких простых отчетов обычно состоит из полос заголовка PageHeader и окончания страницы PageFooter, полосы заголовка отчета Title, полосы заголовка колонок ColumnHeader, полосы данных Detail и суммирующей полосы Summary.

Полоса Title печатается один раз в начале первой страницы накладной и содержит общую информацию о заказе. Статические надписи оформления отчета создаются при помощи компонентов TQRLabel.

Следом за полосой заголовка отчета располагается полоса заголовка колонок, которая использована для создания шапки таблицы. Она отображается один раз на первой странице отчета. Здесь используются компоненты TQRLabel и TQRShape, предназначенные для прорисовки составляющих таблицу линий.

Главную роль в отчетах играет полоса данных Detail, на которой размешены компоненты TQRDBText, связанные с требуемыми полями набора данных. При создании отчета полоса данных размножает заданную в ней структуру данных в соответствии с числом записей набора данных. Размещенные на полосе компоненты TQRShape создают обрамление для одной строки таблицы. Соответственно при размножении структуры полосы получится настоящая таблица.

Полоса Summary замыкает отчет и используется для размещения обобщающих данных.

Более сложную структуру имеют групповые отчеты, которые позволяют, подобно запросам SQL, разбивать массив записей набора данных на группы в соответствии с некоторым критерием. Для каждой группы можно задавать собственные полосы заголовка и окончания. Допускается создание вложенных групп. При создании групп используются компоненты TQRGroup.

Еще одна категория отчетов позволяет печатать данные из наборов данных, связанных отношением "один ко многим". В этом случае для каждой записи из главного набора данных создается и соответствующим образом оформляется группа записей из подчиненного набора данных. При этом используется компонент TQRSubDetail.

Разработчик может объединить несколько различных отчетов в один при помощи компонента TQRCompositeReport. Для включения отчета в общий отчет используется метод Add. Отчеты печатаются один за другим в порядке их подключения. Создавать составной отчет можно только программно.

6. Оформление отчета

Для оформления внешнего вида отчета и представления данных в наборе QuickReport имеется широкий выбор компонентов. Часть из них просто отображается в отчете, часть предназначена для показа значений полей из связанного с отчетом набора данных.

Подавляющее большинство этих компонентов копирует стандартные компоненты VCL, поэтому мы не будем подробно останавливаться на их свойствах и методах. Чаще всего при оформлении отчетов используются три компонента.

Компонент TQRLabel копирует стандартный компонент TLabel из VCL. Он предназначен для создания статических текстов заголовков, комментариев, сносок и т.д.

Компонент TQRDBTexr. обеспечивает отображение полей связанного с отчетом набора данных. Он во многом повторяет компонент TDBText со страницы DataControls Палитры компонентов. Набор данных и поле задается свойствами DataSet и DataField. Необходимый для этого компонент доступа к данным должен располагаться на форме отчета или быть доступным через секцию uses модуля формы отчета.

Компонент TQRShape позволяет оформлять отчет простейшими геометрическими фигурами. С его помощью обычно создаются таблицы. Тип фигуры задается свойством shape. Аналог компонента — компонент TShape со страницы Additional Палитры компонентов.

Нижеследующие компоненты используются несколько реже для решения более специальных задач оформления отчетов.

Компоненты TQRMemo и TQRRichText используется для представления нескольких связанных между собой текстовых строк. Набор строк определяется свойством Lines. Компонент TQRExprMenio отличается от компонента TQRMemo одним свойством RemoveBlankLines, которое при значении True разрешает удаление из свойства Lines пустых строк. Это свойство работает только для исходных данных, заданных во время разработки, новые строки, вносимые в свойство Lines, например, в методе-обработчике Beforeprint, обрабатываться не будут.

Компонент TQRDBRichText предназначен для представления в отчетах полей типа Format Memo набора данных.

Компонент TQRImage позволяет оформить отчет с картинками. Компонент TQRDBimage представляет в отчете изображения из графического поля набора данных.

Данные в отчетах QuickReport можно представлять и в графическом виде. Для этого используется компонент создания графиков в отчетах TQRChart. Система управления графиком основана на аналогичной системе компонента TDBChart.

При создании отчетов помимо основной информации часто требуется отображать и служебные, вспомогательные данные. Чаще всего это дата и время создания отчета и номера страниц. Для решения этой проблемы отчет имеет набор системных переменных;

  • переменная PAGENUMBER определяет выражение для расчета номера текущей страницы;

  • переменная COLUMNNUMBER определяет номер очередной колонки в полосе данных Detail;

  • переменная REPORTTITLE задает заголовок отчета (свойство ReportTitle компонента TQuickRep);

  • переменная APPNAME задает имя приложения, из которого просматривается или печатается отчет;

  • переменная APPSTARTDATE устанавливает дату печати отчета, а переменная APPSTARTTIME устанавливает время печати отчета.

Для представления системных данных в отчете применяется компонент TQRSysData. Для определения вида отображаемой компонентом информации используется свойство Data, которое имеет следующие значения:

  • qrsCoiumnNo — номер текущей колонки в полосе данных Detail;

  • qrsDate — текущая дата;

  • qrsDateTime — текущие дата и время;

  • qrsDetailCount — число записей в связанном с отчетом наборе данных;

  • qrsDetaiiNo — номер текущей записи набора данных.

  • qrsPageNumber — номер текущей страницы;

  • qrsPageCount — число страниц отчета;

  • qrsReportTitle — заголовок отчета;

  • qrsTime — текущее время.

При создании отчетов (особенно на основе наборов данных) почти всегда требуется подвести итог для каких-либо данных, представленных в отчете. Это может быть сумма поступлений или продаж, количество заказов или поступивших партий товаров. Эти данные обычно имеются в формах приложения и их можно перенести в отчет при помощи стандартных компонентов.

Следует отметить тот факт, что в наборе QuickReport для расчета и представления такого рода данных имеется специальный компонент TQRExpr, использовать который гораздо удобнее. Кроме этого, компонент объединяет гибкий и мощный механизм создания на основе данных из таблиц БД вычисляемых выражений. Добиться аналогичных результатов стандартными средствами Delphi можно, лишь создавая довольно громоздкие дополнительные запросы SQL.

Основную роль в создании вычисляемого выражения в компоненте играет свойство Expression, которое имеет строковый тип.

Свойство Master используется для связывания компонента с отчетом или полосой данных.

Свойство Mask позволяет определить особенности отображения результатов вычислений.

Со свойством Expression связан специализированный редактор Expression Wizard, который автоматизирует процесс создания вычисляемого выражения.

Выводы

Основные достоинства компонентов QReport очевидны - это простота и гибкость в использовании. В связи с чем, многие разработчики продолжают использовать в своих приложениях указанные компоненты.