Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Формирование отчетов средствами Quick Reports




Выделяются четыре типа отчетов: простой, с группировкой данных, связанный отношением «мастер/детальный» и составной, объединяющий несколько отчетов. Компоненты отчета находятся на панели QReport. Создание отчета обычно начинается с размещения на отдельной форме компонента QuickRep. Он выполняет роль формы, на которой размещают­ся другие компоненты отчета.

Отчет делится на горизонтальные полосы (разделы). Каждая полоса яв­ляется отдельным настраиваемым компонентом, тип ее задается в свой­ствах Bands, BandType компонентов QuickRep, QRBand соответственно. При проектировании отчета можно его просмотреть командой Preview контекстного меню. После формирования отчета он просматривается в окне предварительного просмотра, вызываемого методом Preview, или выводится на печать методом Print. Можно создать отдельное окно предва­рительного просмотра, используя компонент QRPreview.

Пользователь может воспользоваться готовыми заготовками (шаблонами) отчетов, если выполнит команды File/New/Forms. Имеются три шаблона: Quick Report Master/Detail (отчет из главной и подчиненной таблицы), Quick Report Labels (почтовые этикетки), Quick Report List (опись). Можно воспользоваться мастером отчета, который вызывается командой File/New/Other/Business/Quick Report Wizard. Используемые заготовки или отчет, полученный мастером, можно откорректировать.

Быстрый отчет (QuickRep)

Компонент предназначен для формирования отчета. Па­ра­метры отчета можно изменить в окне Re­port Setting (вызывается одноименной командой кон­текст­ного меню или двойным щелчком на странице отчета).

Специфичные свойства в порядке их задания и использования

DataSet ‑ имя компонента Table или Query с описанием таблицы (свойство таблицы Active=True) или запроса, используемых в отчете (QuickRep1.DataSet:=Form1.Table1).

Bands ‑ полосы в отчете: HasPageHeader (верхний колонтитул), HasTitle (заголовок отчета), HasColumnHeader (заголовки столбцов), HasDetail (область детальных данных ‑ деталь), HasSummary (итоги по отчету), HasPageFooter (нижний колонтитул).

Unit ‑ единица измерения в отчете: MM (миллиметры), Inches (дюймы), Pixels (пиксели), Native (десятые доли миллиметра), Characters (символы с размером, равным значению свойства QuickRep.Font.Size).

Page ‑ параметры страницы отчета: PaperSize (формат страницы, A4), Orientation (poPortrait ‑ книжная, poLandScape ‑ альбомная), Lenght, Width (высота и ширина страницы, если PaperSize=Custom), TopMargin, BottomMargin, LeftMargin, RightMargin (размер верхнего, нижнего, левого и правого полей соответственно), Rule (отображение сетки при проек­тировании). Параметры страницы и отчета можно изменить по команде Report Setting контекстного меню страницы отчета.

Frame ‑ параметры рамки страницы: Color (цвет), Width (ширина в пиксе­лях), Style (стиль), DrawTop, DrawBottom, DrawLeft, DrawRight (наличие линий сверху, снизу, слева и справа соответственно).

PrinterSetting ‑ параметры печати: FirstPage, LastPage (номера первой и последней печатуемых страниц), Copies (число копий), Duplex (двусто­рон­няя печать), OutputBin (способ подачи бумаги).

Рекомендуется для установки параметров принтера самим поль­зо­ва­телем использовать диалоги PrintDialog, (п. 2.3.11.5), Printer­Setup­Dialog (п. 2.3.11.6) или метод PrinterSetup.

Options ‑ режимы: FirstPageHeader (печать верхнего колонтитула на первой странице), LastPageFooter (печать нижнего колонтитула на последней стра­нице), Compression (отчет сохраняется в сжатом формате).

PrintIfEmpty ‑ распечатывать пустой набор данных (True).

SnapToGrid ‑ компоненты автоматически выравниваются по линиям сетки.

ShowProgress ‑ процесс формирования отчета отображается в окне.

Description, ReportTitle ‑ строка примечания, заголовка отчета.

Zoom, State ‑ масштаб отчета в процентах и его текущее состояние.

Available ‑ отчет готов для проcмотра и печати.

CurrentColumn, PageNumber ‑ текущий номер колонки и страницы.

Специфичные методы

Preview ‑ предварительный просмотр отчета после его формирования. Из ок­на просмотра можно вывести отчет на печать или в файл, загрузить сох­ранен­ный отчет, изменить масштаб просмотра (Form5.QuickRep1.Preview).

PreviewModeless ‑ просмотр отчета в отдельном окне (программа продол­ жит свое выполнение во время просмотра).

PreviewModal ‑ предварительный просмотр отчета в модальном окне.

Print ‑ печать отчета (Form3.QuickRep1.Print).

Prepare ‑ формирование отчета без его вывода на экран или на печать.

Cancel ‑ прервать формирование отчета.

ExportToFilter ‑ экспорт отчета в файл.

NewColumn/NewPage ‑ переход к новой колонке/странице.

ResetPageFooterSize ‑ изменение высоты полосы нижнего колонтитула.

Специфичные события

AfterPreview,BeforePrint/fterPrint ‑ закончен просмотр, перед/после печати.

OnEndPage, OnStartPage ‑ создана страница, начата генерация новой.

OnPreview ‑ отчет будет предварительно просмотрен.

Компоненты отчета

Многие компоненты аналогичны соответствующим компонентам формы (аналог указывается в скобках).

QRSubDetail ‑ подчиненная таблица. Связь организуется через свойство Master/Dеtail. В свойстве DataSet указывается подчиненный набор данных, а в свойстве Master указывается отчет, привязанный к главной таблице (п. 3.10.5).

QRStringsBand ‑ полоса строк типа TStrings в свойстве Items (QRStringsBand1.Items.LoadFromFile(‘Fam.Txt’).

QRBand ‑ полоса отчета. Компоненты размещаются на соот­вет­ству­ющих полосах. Свойство BandType ‑ задает тип полосы: rbTiltle (заголовок отчета, печатается в начале отчета), rbPageHeader (заголовок листа), rbDetail (записи отчета), rbPageFooter (подножие листа, выводимое внизу каждого листа), rbSummary (итоги по всему отчету), rbGroupHeader (заголовок группы, выводимый в начале группы), rbGroupFooter (подножие группы, выводимое в конце группы; обычно выводятся итоги по группе), rbSubDetail (данные подчиненного набора для отчета «мастер/детальный», rbColumnHeader (заголовки столбцов, выводимые один раз на странице над данными), rbChild (дочерняя полоса, выводимая после родительской).

QRChildBand ‑ подчиненная полоса. Используется, когда размеры родительской полосы заранее не известны. Полоса добавляется к родительской снизу.

QRGroup‑ заголовок группы элементов. Свойство Expression содер­­жит имя поля (в квадратных скобках, если имя с пробелами) или выражение, по которому производится группировка. Свойство FooterBand задает имя компонента (полосы отчета), являющиеся подножием данной группы (п. 3.10.4) и свойство Master=QuickRep1.

QRLabel ‑ текстовая надпись (Label).

QRDBText ‑ вывод в детальной полосе значения поля (свойство Da­ta­Field) набора данных (свойство DataSet). Свойство Auto­Stre­tch=True и AutoSize=False задает вывод значения в несколько строк.

QRExpr ‑ вычисляемое поле отчета. Выражение или имя поля ука­зы­вается в свойстве Expres­si­on (обычно выражение строится мастером (рис. 3.10.2.1), а значение задается свойством Value).

QRSysData ‑ системная информация, используемая в составных от­че­­тах для единой настройки и вывода дополнительной информации, используя свойство Data: qrsColumnNo (номер текущего столбца много­колоночного отчета), qrsData (текущая дата), qrsDataTime (текущая дата и время), qrsDetailCount (число выведенных записей), qrsDetailNo (номер те­ку­­щей записи главной таблицы), qrsPageNumber (номер текущего листа), qrsPageCount (число листов в отчете, требует второго чтения таблицы, что уве­­личивает время), qrsReportTitle (заголовок отчета), qrsTime (текущее время). Свойство Text задает поясняющий текст.

QRMemo ‑ многострочное поле (Memo).

QRExprMemo ‑ многострочное вычисляемое поле. Включает в ст­ро­ки (свойство Lines) выражения в фигурных скобках, которые вы­чис­ляются при формировании отчета.

QRRichText ‑ форматированный текст.

QRDBRichText ‑ вывод форматированного текста, на основе поля Blod, указанного в свойстве DataField.

QRShape ‑ фигура (Shape).

QRImage ‑ рисунок (Image).

QRDBImage ‑ рисунок, который хранится в поле Blob.

QRCompositeReport ‑ формирование составного отчета из несколь­ких других отчетов. Свойство Reports содержит список отчетов. До­бав­ляется отчет в обработчике события OnAddReport методом Add (QRComopziteReport1.Reports.Add(fmReport1.QuickRep1) (п. 3.10.6).

QRPreview ‑ создание окна просмотра отчета в событии OnPreview.

QRTextFilter ‑ экспорт отчета в текстовый файл, щелкнув по кнопке Save.

QRCSVFilter ‑ аналогичен предыдущему, но данные заключаются в кавычки и между ними выводится разделитель (свойство Separator).

QRHTMLFilter ‑ экспорт отчета в файл формата HTML (в каталог Web ‑ сервера Интернет) для его просмотра из броузера.

QRChart‑ вывод диаграммы на принтер (Chart).

 

Основные свойства компонентов

Alignment ‑ выравнивание текста внутри компонента.

Font ‑ параметры шрифта.

Frame ‑ оформление рамки вокруг отдельного элемента.

Событие OnPrint возникает непосредственно перед выводом компонента. Процедура обработки этого события имеет два параметра: Sender (имя компонента) и Value (выводимое значение, которое в проце­ду­ре обработки можно отредактировать, например, Value:=Value+' тыс.руб.').

Для формирования выражения свойства Expres­si­on обычно ис­поль­зуется мастер выраже­ний (рис. 3.10.2.1), вызы­вае­мый кнопкой с троеточием. В окне мастера имеются кноп­ки: Database Field (спи­сок полей набора), Function (список функций по катего­риям), Variable (спи­сок сис­темных пе­ре­менных), Clear (очистка окна с текс­том вы­ра­же­ния), Validate (про­­­вер­ка выражения), ари­ф­мети­чес­кие, логичес­кие опе­­ра­ции и операции срав­не­ния.

Рис. 3.10.2.1. Окно мастера выражений

Простой отчет

Простой отчет формируется из одного набора данных без группировки данных. Рассмотрим порядок его формирования на примере справочника заказчиков (рис. 3.10.3.1).

Рис. 3.10.3.1

       
   

. Окна проектирования (QuickRep) и просмотра отчета (Preview)

1. Разместим на форме компонент Table со свойствами: Name=Table1, Active=True, DatabasesName=stroiki (псевдоним базы), TableName=zakazhiki.db.

2. Разместим компонент QuickRep под именем QuickRep1. Для всех подсвойств свойства Band укажем значение True (вывод всех полос отчета). Свойство DataSet=Table1.

3. Размеcтим на полосах нужные компоненты отчета: QRLabel (над­писи, заголовки колонок), QRDBText (поля Kz, Nz в детальной полосе), QRExpr (поля Data, Count со значениями Data и Count для свойства Expression), QRSysData (вывод номера листа Data=qrsPageNumber).

4. Разместим кнопку Вывод (кнопку лучше размещать на основной форме, а не на форме с отчетом, как в нашем случае) с командой форми­рования и просмотра отчета QuickRep1.Preview.

5. Проверим правильность, выполнив команду Preview из контекст­ного меню компонента QuickRep или выполнив все приложения и нажав кнопку Вывод.

 
 

3.10.4. Отчет из нескольких таблиц с группировкой данных и итогами

Рассмотрим порядок создания сложных отчетов на примере создания отчета «Состояние строек по заказчикам и подрядчикам» (рис. 3.10.4.3).

Создадим новый проект из двух форм.

Разместим на второй форме компонент Query (панель Data Access) под именем Query1 со свойствами: DatabaseName=Stroiki (псевдоним на­шей базы (п. 3.2)), Active=True (активизация запроса) (рис. 3.10.4.2). Для формиро­ва­ния запроса выполним команду SQL Builder из контекстного меню ком­по­нен­та Query. Появится окно пост­роителя (рис. 3.10.4.1). Вы­берем в поле DataBase базу с псевдонимом Stroiki и перенесем все табли­цы базы, используя поле Table.

Рис. 3.10.4.1. Окно построителя запросов

 

Отметим вклю­чаемые в запрос поля. Мышкой свяжем таблицы по полям Kz и Kp (коды заказчиков и подрядчиков) и на странице Joins проверим связи. На странице Sorting укажем поля сортировки Nz и Np (наименования заказчиков и подрядчиков). Нажмем кнопку Execute Query
для проверки запроса. Зак­роем окно построителя. Выполним команду Fields Editor из контекстного меню компонента Query1 и проверим, чтобы все поля запроса были в окне Form2.Query1. Если их нет, то выполним
команду Add All Fields из контекстного меню окна Form2.Query1.

Рис. 3.10.4.2. Окно проектирования отчета QuickRep

Рис. 3.10.4.3. Окно просмотра сформированного отчета Preview

Разместим на второй форме компонент QuickRep (панель QReport) под именем QuickRep1 со свойствами: DataSet=Query1 (сформи­рован­ный ранее запрос является исходным набором данных для отчета); составное свойство Bands задает вывод соответствующих полос отчета Page Header (заголовок листа), Column Header (заголовки колонок), Detail (детальная полоса), Summary (итоги по отчету).

Разместим компоненты QRExpr в детальной полосе для вывода значений полей (значения свойств Expression): Ns (наименование стройки), Ss (сметная стоимость), Fs (фактически освоенная сумма) и значения выра­жения Ss-Fs (неосвоенная сумма). Для числовых полей укажем свойство Alignment= taRightJustify (выравнивание справа). Проверьте отчет, выпол­нив команду Preview из контекстного меню компонента QuickRep1. Если отчет пуcтой, то проверьте значение свойства Active для компонен­та Query1: оно должно быть истинным (True).

В полосе Column Header сформируем заголовки колонок. Каждый заголовок формируется отдельным компонентом QRLabel.

В полосе Page Header разместим наименование отчета (QRLabel), те­­кущую дату и время (QRSysData со свойством Data=qrsDateTime), номер те­­ку­щего листа (QRSysData со свойствами Data=qrsPageNumber, Text=«Лист»).

В полосе Summary сформируем итоги по отчету, размещая компо­ненты QRExpr со свойствами Expression, в которых используется функция Sum для итогового суммирования полей Ss, Fs и Ss-Fs. и Alignment= taRightJustify.

Выделим QuickRep1 и разместим компонент (двойным щелчком) QRGroup под именем QRGroup1 (для размещения заголовка группы первого уровня ‑ заказчики) со свойствами: Expression=Query1.Nz (группировка производится по полю с наиме­но­ва­нием заказчика) и Master=QuickRep1. Разместим компонент QRExpr со свойством Expression=Query1.Nz (наименование заказчика).

Разместим компонент QRGroup под именем QRGroup2 (для размещения заголовка группы второго уровня ‑ подрядчики) со свойст­вами: Expression= Query1.Np (группировка производится по полю с наиме­но­­ва­нием подрядчика) и Master=QuickRep1. Разместим компонент QRExpr со свойством Expression=Query1.Np (наименование подрядчика).

Разместим компонент QRBand под именем QRBand1 (для ра­з­мещения подножия группы первого уровня ‑ заказчики) со свойст­ва­ми: BandType=rbGroupFooter (подножие группы). Для группы QRGroup1 установим свойство FooterBand=QRBand1 (подножием группы является по­лоса QRBand1). Разместим поля с итогами аналогично итогам в полосе Summary. Для каждого компонента QRExpr установим свойство ResetAfterPrint=True (очистка итоговых полей после их вывода, иначе - будут нарастающие итоги).

Разместим компонент QRBand под именем QRBand2 (для ра­з­мещения подножия группы второго уровня ‑ подрядчики) со свойст­ва­ми: BandType=rbGroupFooter (подножие группы). Для группы QRGroup2 установим свойство FooterBand=QRBand2 (подножием группы является полоса QRBand2). Разместим поля с итогами аналогично итогам в полосе QRBand1.

12. На первой форме разместим кнопку Отчет с процедурой обра­бо­тки события OnClick (вывода отчета):

Procedure TForm1.Button1Click(Sender: TObject);

Begin Form2.Query1.Active:=False; {закрытие запроса}

Form2.Query1.Active:=True; {открытие запроса для его формирования}

Form2.QuickRep1.Preview; {формирование и просмотр отчета}

Form2.Query1.Active:=False;{закрытие запроса} End;

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

13. Выполним приложение и проверим полученный отчет.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...