Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7_Отчёты в Delphi.doc
Скачиваний:
2
Добавлен:
06.09.2019
Размер:
239.1 Кб
Скачать

Друк таблиць за допомогою Quick Reports

Створення звітності за допомогою «Quick Report» завдання не складне. За якихось 10 хвилин ми створили красивий і зручний звіт, який легко роздрукувати. В ньому ми готували до друку один запис з таблиці. Але що робити, якщо потрібно роздрукувати всі записи бази даних? Невже потрібно для кожного рядка ставити окремі компоненти? Звичайно ж ні, все робиться дуже просто.

Відкривайте приклад з минулої частини, зараз його треба буде підкорегувати. Відкрийте модуль «ReportForm», де знаходяться компоненти звітності. Виділіть «QuickRep1» і у властивості «Bands» встановіть true в параметрі «Hascolumnheader». На формі з'явиться новий блок «Column Header», який можна використовувати для створення заголовків таблиць. Тепер утримуючи «Shift» обведіть всі компоненти «QRLabel» в блоці «DetailBand1». Виберіть з меню «Edit» головного меню Delphi пункт «Cut», щоб вирізати компоненти в буфер обміну. Тепер виділіть блок «ColumnHeaderBand1» і виберіть з меню «Edit» головного меню Delphi пункт «Paste», щоб вставити вирізані компоненти з буфера обміну в блок «ColumnHeaderBand1».

Знову виділіть компонент «QuickRep1» і у властивості «DataSet» вкажіть таблицю «DataModule1.BookTable». Якщо зробити це, то компонент «QuickRep1» автоматично перебиратиме всі записи з цієї таблиці і використовуватиме їх в компонентах, які стоять в блоці «DetailBand1».

Запустіть програму та натисніть кнопку друку. Повинне відчинитися вікно, схоже на рис. 1.6:

Рис. 1.6 Вікно попереднього перегляду

Як бачите, блок заголовка і «ColumnHeaderBand1» роздрукувалися лише по одному разу, а блок «DetailBand1» був надрукований для кожного рядка таблиці. Блок заголовків колонок друкуватиметься по одному разу вверху кожної сторінки, а після нього йтимуть рядки таблиць. В принципі, на цьому можна було б закінчити розмову, але необхідно ж створити таблицю, а для цього потрібно намалювати сітку. Ось тут можна відмітити єдиний недолік звітності за допомогою «Quick Report» – кожну комірку доведеться малювати окремо за допомогою компонентів «QRShape».

Друк пов’язанних таблиць

В результаті вийшов досить хороший звіт. Але в телефонному довіднику використовується зв'язана таблиця і хотілося б, щоб у вихідному документі друкувалися всі телефони, що належать людям! Можна знову написати SQL запит, який буде створювати зведену таблицю з двох і потім використовувати цей запит для звіту, замість таблиць, але це не вихід.

Додайте на форму звіта ще один компонент – «QRSubDetail» з закладки «QReport». Цей компонент призначений для перебору даних, що відносяться до підлеглих таблиць. Встановіть у нього наступні властивості:

DataSet – встановіть «DataModule1.TelephonTable», щоб пов'язати блок з таблицею «Телефоны», яка є підлеглою до головного довідника.

Master – тут потрібно вказати головний компонент з основними даними. Оберіть в цій властивості «QuickRep1».

Зараз додайте на цей блок компонент «QRLabel», щоб зробити надпис «Телефон». Праворуч від нього додайте компонент «QRDBText». У нього встановіть властивість «DataSet» в «DataModule1.TelephonTable», а властивість «DataField» в «Телефон» (рис. 1.7):

Рис. 1.7 Вікно попереднього перегляду

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]