Понятие отчета
Под отчетом понимают средство для подготовки информации из БД к печати на принтере. С помощью отчетов удается формировать необходимую документацию, основанную на данных, с которыми работает информационная система. При этом для каждого вида документа создается отдельный отчет, являющийся как бы бланком документа. В процессе работы отчет многократно вызывается, автоматически заполняется данными и печатается на принтере.
В состав Borland Delphi 7.0 входит два набора компонентов для работы с отчетами:
Quick Reports;
Rave Reports.
Quick Reports – простейший набор компонентов для создания отчетов. Он хорошо подходит в тех случаях, когда требуется быстро построить простой отчет. С 3-й по 6-ую версии Delphi компоненты Quick Reports были единственным средством построения отчетов.
В 7-й версии Delphi был добавлен гораздо более мощный набор компонентов Rave Reports, который хорошо подходит для построения сложных отчетов. Этот набор компонентов теперь считается основным. Однако компоненты Quick Reports также входят в состав Delphi 7.0, хотя по умолчанию и не показаны на палитре компонентов.
Далее будут рассмотрены оба этих набора.
Набор компонентов Quick Reports
Чтобы набор Quick Reports стал доступен, необходимо в среде Delphi установить соответствующий пакет (package) компонентов. Пакет представляет собой специальную динамическую библиотеку с расширением *.bpl, в нашем случае – dclqrt70.bpl. Для установки пакета следует выполнить пункт меню Component–Install Packages, нажать кнопку Add и далее выбрать требуемый пакет. Как правило, пакеты расположены в следующей папке: C:\Program Files\Borland\Delphi7\Bin.
Установленный набор компонентов размещен на вкладке QReport. Перечислим наиболее часто используемые компоненты, входящие в состав Quick Reports:
- TQuickRep – визуальный компонент, составляющий основу отчета. На нем размещаются все остальные элементы отчета;
- TQRLabel – текстовая метка. Компонент аналогичен стандартному компоненту TLabel, но приспособлен для использования в отчетах;
- TQRDBText – текстовое поле. Компонент предназначен для отображения в отчете значений заданного поля БД;
- TQRExpr – выражение. Компонент предназначен для отображения в отчете вычисляемых полей.
Пусть требуется создать отчет для печати информации о перечне всех товаров с указанием названия товара и его цены в рублях и долларах. Порядок создания отчета следующий:
1. Создать новую форму, дав ей имя FormQuickRep, и сохранить ее в модуле UQuickRep.pas.
2. Подключить к модулю UQuickRep.pas модуль главной формы приложения (будем считать, что он называется UMain.pas):
uses
Windows, ..., UMain;
Аналогично, подключим к модулю главной формы модуль UQuickRep.pas:
uses
Windows, ..., UQuickRep;
3. Разместить на форме FormQuickRep компонент типа TQuickRep, дав ему имя QuickRep.
4. Разместить на форме FormQuickRep компоненты TADOConnection и TADOQuery, задать им имена ADOConnection и QueryGoods. Связать компоненты между собой, подключить компонент ADOConnection к требуемой БД и занести в свойство SQL компонента QueryGoods необходимый запрос на выборку к БД, например:
SELECT * FROM Товары
5. Задать для компонента QuickRep следующие свойства:
- Набор данных, по которому составляется отчет:
DataSet := QueryGoods
Если это свойство не задать, то в отчете будет выводиться информация только об одной строке набора данных.
- Разрешить отображение полосы заголовка:
Bands.HasTitle := true
- Разрешить отображение полосы названия полей:
Bands.HasColumnHeader := true
- Разрешить отображение полосы отдельных записей:
Bands.HasDetail := true
6. Создать заголовок отчета, для чего разместить в центре полосы заголовка компонент типа TQRLabel и задать название отчета в его свойстве Caption, например, «Перечень товаров».
7. Создать шапку отчета, для чего разместить на полосе названий полей несколько компонентов типа TQRLabel и задать названия полей в их свойствах Caption, например, «Наименование»,«Цена в руб»,«Цена в $».
8. Разместить на полосе отдельных записей два компонента типа TQRDBText для вывода наименования товара и цены товара в рублях. Задать для обоих компонентов имя набора данных QueryGoods в их свойствах DataSet и названия соответствующих полей набора данных в свойствах DataField.
9. Разместить на полосе отдельных записей компонента типа TQRExpr. Задать свойство Expression, записав в него следующее выражение для вычисления цены в долларах:
QueryGoods.Цена /30
При необходимости можно использовать мастер для построения выражений, позволяющий выбирать поля таблиц БД (кнопка Database Field), стандартные функции (кнопка Function) и переменные (кнопка Variable).
Внешний вид разработанного отчета представлен на рисунке 1.

10. Разместить на главной форме кнопку, дав ей название “QuickRep” и написав для нее обработчик, вызывающий предварительный просмотр отчета:
FormQuickRep.QuickRep.Preview;
При необходимости печати отчета обработчик выглядел бы следующим образом:
FormQuickRep.QuickRep.Print;
11. Откомпилировать и запустить приложение, убедиться в его работоспособности.
12. Улучшить внешний вид отчета, изменяя шрифты, местоположение полей и другие настройки компонентов отчета.
Набор компонентов Rave Reports
Набор компонентов размещен на вкладке Rave. В его состав входят следующие основные компоненты:
TRvProject – компонент отчета. Обеспечивает загрузку ранее созданного в визуальной среде Rave Reports отчета из файла с расширением rav.
TRvSystem – компонент управления отчетом. Обеспечивает работу приложения с отчетом. Взаимодействуя с компонентом отчета, с одной стороны, и сервером отчета Rave Reports, с другой, этот компонент обеспечивает просмотр и печать отчетов.
TRvCustomConnection, TRvDataSetConnection, TRvTableConnection, TRvQueryConnection – группа компонентов соединения с источниками данных, предназначенные для подключения отчетов к различным источникам данных.
TRvNDRWriter, TRvRenderHTML, TRvRenderPreview, TRvRenderRTF, TRvRenderPrinter, TRvRenderText, TRvRenderPDF – группа компонентов преобразования данных, позволяющих конвертировать отчеты из формата данных Rave Reports в другие форматы (текстовый, PDF, HTML, RTF), а также распечатывать или просматривать отчеты.
Основой отчета является файл отчета с расширением rav, который создается в визуальной среде разработки Rave Reports и называется проектом отчета. Созданный проект отчета необходимо связать с приложением Delphi. Для этого используется компонент TRvProject, который обеспечивает представление отчета в приложении. Для просмотра и печати отчета используется компонент TRvSystem, котоый взаимодействует непосредственно с ядром Rave Reports. При компоновке приложения ядро Rave Reports автоматически включается в его состав. Схема взаимодействия компонентов Rave Reports приведена на рисунке 2.

Для того чтобы приложение Delphi могло выполнять функции печати отчетов, разработчик должен выполнить следующий набор операций.
Создадим отчет аналогичный рассмотренному ранее, используя набор компонентов Rave Reports. Порядок создания отчета следующий:
1. Разместить на главной форме приложения следующие компоненты: TRvProject, TRvSystem, TRvDataSetConnection, TADOConnection и TADOQuery, задав им имена, соответственно: RvProject, RvSystem, RvDataSetConnection, ADOConnection и QueryRaveRep. С помощью свойства Engine связать компонент RvProject с компонентом RvSystem. Настроить компонент RvDataSetConnection, подключив его к компоненту QueryRaveRep с помощью свойства DataSet. Связать компоненты QueryRaveRep и ADOConnection, подключить компонент ADOConnection к требуемой БД. Для компонента QueryRaveRep задать следующий текст запроса:
SELECT Наименование as Name,
Цена as PriceRub,
Цена /30 as PriceUSD
FROM Товары
2. При помощи визуальной среды разработки Rave Reports создать проект отчета. Для этого выполнить двойной щелчок по компоненту RvProject или выбрать пункт меню Tools–Rave Designer. В открывшемся редакторе отчетов выполним пункт меню File–New Data Objects, чтобы настроить соединение с БД. В открывшемся окне выберем пункт меню Direct Data View (рисунок 3).

В следующем окне (рисунок 4) выберем ранее созданный компонент соединения RvDataSetConnection и нажмем кнопку Finish.

Далее для упрощения создания отчета воспользуемся мастером построения отчетов. Для этого выполним пункт меню Tools–Report Wizards–Simple Table. В ходе выполнения мастера потребуется выбрать поля, включаемые в отчет, и порядок следования полей, а также задать текст заголовка отчета. Пример отчета, созданного с помощью мастера, представлен на рисунке 5.

Теперь можно отредактировать сгенерированный отчет, задав необходимые настройки шрифтов. После окончания редактирования необходимо сохранить отчет, выбрав пункт меню File–Save As и задав имя отчета, например, goods.rav. Для предварительного просмотра отчета следует нажать F9.
Далее следует закрыть окно Rave Reports.
3. В компоненте RvProject задать свойство ProjectFile, указав в нем имя ранее созданного файла проекта отчета (goods.rav).
4. Разместить на главной форме кнопку, дав ей название “QuickRave” и написав для нее обработчик, вызывающий предварительный просмотр отчета или выполняющий его печать:
RvProject.Execute;
Чтобы задать, какое действие будет выполнялся по умолчанию, следует задать в компоненте RvSystem свойство DefaultDest:
- предварительный просмотр: DefaultDest := rdPreview;
- печать: DefaultDest := rdPrinter.
5. Откомпилировать и запустить приложение, убедиться в его работоспособности.
Исходники:
•

•

•
|