Структурная схема терминов
Назначение и виды отчетов
Отчет – это печатный документ, содержащий данные, получаемые в результате выполнения запроса к БД. Можно выделить следующие виды отчетов:
· простой отчет;
· отчет с группированием данных;
· отчет для таблиц, связанных отношением главный-подчиненный;
· составной отчет.
В Delphi для создания отчетов служит генератор отчетов QuickReport, содержащий обширный набор компонентов.
Компоненты для формирования отчетов
Компоненты, предназначенные для создания отчетов, находятся на странице QReport палитры компонентов, большинство из них являются визуальными.
Компонент-отчет
Главным элементом отчета является компонент-отчет QuickRep. Его обычно размещают на отдельной форме, предназначенной для создания отчета. При размещении на форму компонент QuickRep имеет вид страницы формата A4, отображаемой в натуральную величину. На этапе разработки масштаб страницы и отображаемых на ней компонентов можно менять с помощью свойства Zoom (типа Integer в процентах).
Компонент QuickRep связывается с набором данных TTable или TQuery с помощью свойства DataSet.
Пример 1
Uses Unit1;
...
QuickRep1.DataSet1 = Form1.Table1;
...
Отчет состоит из отдельных полос – составных частей, определяющих содержание и внешний вид документа, задаваемых свойством Bands.
Свойства:
- Page определяет параметры страницы отчета;
- Frame – параметры рамки;
- PrinterSettings – параметры принтера;
- PrintifEmty – выводить ли пустой отчет на печать;
- SnaptoGrid – способ выравнивания элементов отчета;
- ShowProgress – отображать ли процесс подготовки отчета к печати или просмотру в отдельном окне. По умолчанию True. Процесс может быть прерван нажатием клавиши <Esc>.
Методы:
- Print – предназначен для печати отчета;
- Preview – предварительный просмотр;
- PrinterSetup – установка текущего принтера и его параметров перед началом печати.
Если компонент-отчет QuickRep связан с набором данных, выводимых в DBGrid, то записи выводятся в том же порядке.
Пример 2
Uses UReport;
...
procedure TForm1.btnPrintClick(Sender: TObject);
var bm: TBookmark;
begin
// Запоминание положения указателя текущей записи
bm:=Table1.GetBookmark;
// Печать отчета
fmRepotrt.QuickRep1.Print;
// Восстановление положения указателя текущей записи
Table1.GotoBookmark(bm);
Table1.FreeBookmark(bm);
End;
При печати отчета генерируются события BeforePrint и AfterPrint, с помощью обработчиков которых можно задать дополнительные действия до и после печати отчета.
Полоса отчета
Является основным элементом отчета, где размещаются другие его компоненты. Полоса отчета задается компонентом QRBand.
Тип полосы определяется свойством BandType, принимающим значения вида:
- rbTitle – заголовок отчета, выводится один раз на первой странице под верхним колонтитулом, если он есть;
- rbPageHeader – верхний колонтитул, печатается в начале каждой страницы, содержит дату и/или номер страницы;
- rbDetail – данные записей набора данных;
- rbPageFooter – нижний колонтитул, печатается в начале каждой страницы, содержит дату и/или номер страницы;
- rbSummary – итог отчета, выводится в конце отчета, но выше нижнего колонтитула;
- rbGroupHeader – заголовок группы, выводится для каждой группы;
- rbColumnHeader – заголовки столбцов, печатаемые один раз на каждой странице над данными;
- и др.
При печати каждой полосы генерируются события BeforePrint и AfterPrint, их можно использовать для дополнительной обработки.
Пример 3
Procedure TfmReport.DetailBand1BeforePrint(Sender: TObject);
Var PrintBand: Boolean;
Begin
PrintBand:=Form1.Table1.FieldByName('Salary').AsFloat > 3000;
End;
Компоненты, размещаемые в полосе отчета
В полосе отчета размещаются компоненты только страницы QReport. Другие компоненты можно разместить, но в отчет они не попадут. Можно разместить компонент на отчете, но вне полосы, тогда он будет печататься на каждой странице (например, картинка с логотипом фирмы).
Обычно используются следующие компоненты отчета:
- QRLabel – надпись с текстом, для полос данных обычно не используется;
- QRDBText – значение поля записи БД, обычно размещается в полосе данных;
- QRExpr – выражение, возможное с применением значений полей, обычно размещается в полосах данных и нижних колонтитулах;
- QRSysData – системная информация для итоговых полос и колонтитулов;
- QRImage – графическое изображение, используется в любой полосе;
- QRShape – геометрическая фигура, используется в любой полосе.
Простой отчет
Представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде без какой-либо дополнительной обработки.
Простой отчет может содержать следующие полосы:
- верхний колонтитул (rbPageHeader);
- заголовок отчета (rbTitle);
- заголовки столбцов (rbColumnHeader);
- данные (rbDetail);
- итог отчета (rbSummary);
- нижний колонтитул (rbPageFooter).
Дата добавления: 2021-09-25; просмотров: 274;