Создание простого отчета
Отчеты QuickReport основаны на наборе горизонтальных полос (bands). При построении отчета на форму помещаются несколько компонентов QRBand (наследник TPanel) различных типов.
Для создания простейшего отчета разместим на форме следующие компоненты (рис. 1):
- TQRBand - компонент, представляющий собой часть отчета - контейнер для размещения данных (например, заголовок отчета, верхний или нижний колонтитул страницы, верхний или нижний колонтитул группы и др.). Компоненты TQRBand печатаются в зависимости от их типа в необходимых местах отчета, независимо от их взаимного расположения на форме. Наиболее часто используемое свойство этого компонента – BandType, тип "полосы" (колонтитул страницы или группы, "полоса" данных и др.). Возможные значения: rbTitle – заголовок отчета, rbPageHeader – верхний колонтитул страницы, rbColumnHeader – верхний колонтитул колонки в многоколоночном отчете, rbDetail – полоса с табличными данными (повторяется столько раз, сколько строк имеется в наборе данных, авляющемся основой отчета), rbPageFooter – нижний колонтитул страницы, rbOverlay – фон страницы, печатается в левом верхнем углу каждой страницы, rbGroupHeader – заголовок группы, rbSubDetail – "полоса" табличных данных для Detail-таблицы, rbGroupFooter – нижний колонтитул группы, rbSummary – печатается в конце отчета). Свойству BandType созданного нами компонента присвоим значение rbTitle
- TQuickReport (этот компонент отвечает за превращение формы в отчет).
- TQRLabel, помещенный на QRBand1 (этот компонент предназначен для вывода статического текста, и его свойству Caption можно присвоить значение, равное тексту заголовка будущего отчета).
Рис. 1. Создание заголовка отчета
Если нажать правую клавишу мыши над компонентом QuickReport1 и выбрать из контекстного меню опцию Preview Report, появится окно просмотра, в котором будет отображена страница отчета с созданным заголовком.
Для модификации отчета следует изменить свойство BandType компонента QRBand1 на rbDetail и добавить на форму компонент TTable. Далее нужно установить его свойство DataBase равным имени псевдонима, например, BCDEMOS, свойство TableName равным имени таблицы, например, CUSTOMER.DB, а затем свойство Active равным true. После этого нужно добавить на форму компонент TDataSource и установить его свойство DataSet равным имени добавленного ранее компонента Table1, а затем установить свойство DataSource компонента QuickReport равным имени созданного компонента DataSource1. После этого можно добавить компонент TQRDBText на QRBand1(этот компонент предназначен для вывода содержимого полей таблицы или запроса, служащего источником данных проектируемого отчета), установить свойство DataSource равным имени созданного ранее компонента DataSource1 и выбрать нужное поле в качестве значения свойства DataField. Если есть необходимость, можно добавить другие компоненты TQRDBText и выбрать другие поля таблицы для отображения в отчете (рис. 2).
Рис. 2. Модификация табличного отчета
Если теперь из контекстного меню компонента QuickReport выбрать опцию Preview Report, можно увидеть модифицированный табличный отчет.
Теперь попробуем создать отчет с заголовком отчета и колонтитулами. Для этого нужно использовать при создании отчета несколько различных компонентов TQRBand.
Для создания отчета с заголовком и колонтитулами следует cоздать новую форму, разместить четыре компонента TQRBand на форме (они получат по умолчанию имена QRBand2,...., QRBand5) и установить их свойства BandType равными соответственно rbTitle, rbColumnHeading, rbDetail и rbPageFooter. Далее следует добавить на форму компонент TTable и установить его свойство DatabaseName равным BCDEMOS, свойство TableName равным Customer, а затем свойство Active равным true. Затем нужно добавить на форму компонент TDataSource и установить в его свойстве DataSet имя добавленного ранее компонента Table1 и установить свойство DataSource компонента QuickReport равным имени созданного компонента DataSource1. Затем следует добавить несколько компонентов TQRLabel в качестве заголовка отчета и столбцов поверх соответствующих компонентов TQRBand, присвоив необходимые значения свойству Caption каждого из них.
Затем следует разместить три компонента QRDBText на компонент QRBand со свойством BandType, равным DetailBand и установить их свойства DataSource равными DataSource1, а свойства DataField равными Company, Phone и Fax. Наконец, для отображения номера страницы нужно поместить компонент TQRSysData (этот компонент предназначен для вывода сведений, не зависящих от содержимого данных, таких как номер страницы, дата, время и др.) на компонент TQRBand со свойством BandType, равным rbPageFooter и установить его свойство Data равным qrcPageNumber, а свойство Text равным “Стр. “
После этого форма будет выглядеть, как на рис. 3.
Можно снова выбрать опцию Preview Report и просмотреть содержание нового отчета.
Рис.3. Отчет с заголовком и колонтитулами
Создание отчетов "master-detail"
Преобразуем созданный отчет в отчет "master-detail". Для этого следует добавить компонент TTable, установить его свойство DatabaseName равным BCDEMOS, свойство TableName равным ORDERS.DB, а затем установить свойство Active равным true. После этого установим свойство MasterSource равным DataSource1. Затем выберем свойство MasterFields, вызвав диалоговую панель для установки связи master/detail (рис. 4 ) и из списка доступных индексов выберем CustNo. Затем выделим имя поля CustNo в обоих списках полей и нажмем кнопку Add, а кнопку OK.
Рис. 4. Установка связи master/detail
Добавим на форму компонент TDataSource, установив его свойство DataSet равным Table2 . Затем добавим к форме новый компонент TQRBand (c именем QRBand6). После этого добавим компонент TQRDetailLink, предназначенный для установки связей между источниками данных в отчетах, и установим его свойство DataSource равным DataSource2. Затем установим его свойство Master равным QuickReport, а свойство DetailBand равным QRBand6. Свойство BandType компонента QRBand6 автоматически примет значение rbSubDetail.
Наконец, поместим два компонента TQRDBText на QRBand6, установим их свойства DataSource равными DataSource2, а свойства DataField равными OrderNo и AmountPaid. Слева от них поместим два компонента TQRLabel с названиями этих полей (рис. 5).
Рис. 5. Форма отчета "master-detail".
- Выберем опцию Preview Report из контекстного меню компонента QuickReport для предварительного просмотра отчета (рис.6).
Рис. 6. Отчет "master-detail".
Отметим, что если компонент QuickReport не связан с компонентом DataSource, то при печати отчета выводится только одна запись из набора данных, что легко позволяет печатать текущую запись.