Генерация отчетов с помощью компонентов QuickReport

Компонент Quick Report предназначен для генерации отчетов по содержимому базы данных и выводу их на печать. В Delphi5 (C++ Builder 5.0) этот компонент устанавливается по умолчанию. В Delphi 7.0 и выше используется компонент Rave Report, который в настоящей работе не рассматривается. Для установки компонента Quick Report в Delphi 7.0 используйте меню Component/InstallPackages/Add/Program Files\Borland\Delphi7\Bin\dclqrt70.bpl. Для того, чтобы компоненты раздела QuickReport могли функционировать необходимо, чтобы на компьютере был установлен хотя бы один принтер по умолчанию.

Предположим, что нам необходимо получить бумажную копию всех телефонов, имеющихся в записной книжке в формате: «Ф.И.О., Телефон, Тип». Для этого создадим на форме AllQuery дополнительный компонент типа TIBQuery. В свойство SQL занесемтекст запроса: «Select persona.fio, pnumber.pnum, pnumber.ptype from pnumber inner join persona on (pnumber.p_id = persona.p_id)».

Для создания отчета создаем новую форму ReportForm на которой со страницы QReport переносим компонент генератора отчетов QuckRep1 : TQuickRep.

Укажем, что форма ReportForm использует модуль DataModule2 и выполним настройку отчета:

- в свойстве DataSet устанавливаем ссылку на компонент запроса AllQuery;

- в свойстве Bands устанавливаем значение true напротив тех разделов отчета, которые необходимы при его визуализации:HasColumnHeader – заголовки столбцов, HasDetail – зона вывода записей базы данных, HasSummary – итог под отчетом, HasTitle – заголовок отчета.

В раздел Title помещаем два компонента со страницы QReport: QRLabel1:TQRLabel и QRSysData1:TQRSysData. В компонентеQRLabel1:TQRLabel устанавливаем свойство Caption: «Телефонная книга от», а в компоненте QRSysData1 выставляем свойство Data в значение qrsDateTime. Таким образом при выводе отчета в его заголовке будет надпись следующего вида: «Телефонная книга от 16.04.2007 13:21:43».

В разделеColumn Header располагаем компоненты TQRLabel так, чтобы заголовки столбцов позиционировались над данными.

В раздел Detail помещаем компоненты типа TQRDBText, которые ответственны за вывод данных запроса. Для каждого компонента в поле DataField указываем имя поля, откуда компонент отчета получает данные (например, для компонента QRDBText1 это поле AllQuery.FIO). В начале строки раздела Detail располагается компонент QRSysData2, поле Data которого установлено в значение QrsDetailNo (номер стоки очета).

В разделе Summary расположены компоненты QRLabel5:TQRLabel – для вывода сообщения «Итого записей» и QRSysData3 со значением в поле Data QrsDetailCount. В результате при генерации отчета в последней строке будет выведено количество записей телефонной книги.

В целом форма отчета имеет вид, который показан на рисунке 6.1.

Генерация отчетов с помощью компонентов QuickReport - student2.ru

Рисунок 6.1 – Форма отчета

Для активизации отчета в режиме просмотра на главной форме проекта располагаем кнопку «Отчет» (рисунок 6.2).

Генерация отчетов с помощью компонентов QuickReport - student2.ru

Рисунок 6.2 – Главная форма проекта

В обработчике BtReportClick выполняем активизацию запроса AllQuery и вызываем метод ReportForm.QuickRep1.Preview:

procedure TForm1.BtReportClick(Sender: TObject);

begin

DataModule2.AllQuery.Open; ReportForm.QuickRep1.Preview;

end;

В режиме исполнения отчет имеет вид, показанный на рисунке 6.3.

Генерация отчетов с помощью компонентов QuickReport - student2.ru

Рисунок 6.3 – Отчет в режиме просмотра.

С помощью панели инструментов, расположенной в верхней строке отчета можно сохранить его в файл или вывести на печать.

Наши рекомендации