Етапи побудови звіту
Виділяють наступні компоненти процесу побудови типового звіту:
Етапи створення звіту
Дані
Являють собою сукупність даних, на основі яких будується звіт. Організація доступу до даних з БД здійснюється компонентами FastReport без участі програміста.
Крім даних, що зберігаються в БД, FastReport використовує будь-які джерела (масив, файл, вміст StringGrid і ін.). В цьому випадку програміст сам піклуватися про доступ до такої інформації. Для цього використовується набір подій, що дозволяють здійснити передачу даних в компоненти FastReport.
Крім доступу до даних, визначених у проекті, FastReport дозволяє створювати нові компоненти в реальному часі. У FastReport принципи створення компонентів доступу до даних максимально наближені до тих, що використовуються в середовищі Delphi. Так само, як і в Delphi, на форму кладеться компонент, і в інспекторі об'єктів налаштовуються його властивості.
Параметри
На цьому етапі здійснюється запит параметрів у користувача (наприклад, діапазон дат, за яким необхідно вивести дані). Деякі звіти обходяться без цього етапу або використовують фіксовану установку параметрів (без запиту їх значень в діалозі).
У FastReport є можливість запиту параметрів, якщо звіт використовує дані з запиту (Query). Для діалогу з користувачем використовується діалогове вікно. Крім того, для запиту параметрів використовується форма, розроблена в середовищі Delphi. Правда, при необхідності будь-яких змін в логіці роботи доведеться перекомпілювати проект.
FastReport, крім цього, дозволяє користувачеві самому розробляти форму діалогу. Процес нагадує побудова форми в середовищі Delphi: є набір стандартних елементів управління, які розташовуються на формі діалогу і налаштовуються їх властивості. За допомогою вбудованої мови FastReport дозволяє реалізувати необхідну логіку роботи діалогу і передати введені значення ядру генератора.
Можливість створення власних діалогів дуже корисна - укупі з іншими можливостями (створення джерел даних, використання вбудованого мови) вона дозволяє створювати звіти, максимально відв'язаних від середовища Delphi. Це дозволяє створювати нові звіти і модифікувати існуючі без переписування або перекомпіляції проекту.
Форма
Форма звіту являє собою набір елементів, що описують вид готового звіту. Для угруповання елементів по їх розташуванню в готовому звіті застосовуються бенди (англ. Band - смужка). Бенди поділяються на два види: службові (заголовок звіту, сторінки та ін.) І бенди, що утворюють багаторядкова частина звіту (далі - дата-бенди). Дата-бенди підключаються до джерел даних, і їх вміст виводиться стільки разів, скільки є рядків даних в джерелі.
Для побудови форми звіту використовується візуальне середовище розробки - дизайнер / Інтерфейс дизайнера виконаний на сучасному рівні з використанням панелей інструментів (toolbars), розташування яких змінюється. Для зручності маніпуляції властивостями об'єктів звіту використовується інспектор об'єктів, аналогічний делфійскому.
Обробка
Під обробкою розуміється обробка вхідних даних, модифікація форми звіту або окремих її компонентів в процесі побудови звіту. Найпростіший приклад такої обробки - висновок від'ємних сум червоним кольором. Більш складний приклад обробки - друк суми, яка підраховується в підвалі групи, в її заголовку.
Реалізувати подібну обробку можна, вдавшись до написання обробників подій в Delphi - саме так і зроблено в FastReport. Цей спосіб не є універсальним, тому що не дозволяє створювати нові звіти поза середовищем Delphi без переписування і перекомпіляції проекту. Саме тому в FastReport застосована вбудована мова - спрощений аналог Pascal. Скрипти, написані на цій мові, по суті справи, є обробниками подій, що викликаються перед промальовуванням об'єктів. Це дає можливість виконувати досить складну обробку інформації без написання коду в Delphi, і відповідно, без жорсткої прив'язки звіту до проекту.
Можливості вбудованого мови FastReport досить широкі. З скрипта доступні всі властивості і методи об'єктів звіту, а також змінні, поля таблиць БД. В скрипті створюються змінні і масиви, які доступні в усьому звіті. Про можливості вбудованого мови говорить той факт, що така досить складна задача, як друк сум групи в її заголовку (сама сума вважається в підвалі групи) засобами мови FastReport робиться просто.
Готовий звіт
Готовий звіт являє собою продукт діяльності ядра FastReport - то, що користувач бачить при натисканні кнопки Попередній перегляд. На відміну від багатьох генераторів звітів, які зберігають вміст сторінок звіту у вигляді метафайлу (тобто зображення у форматі EMF), в FastReport готовий звіт представлений набором об'єктів, що описують вміст кожної сторінки звіту. Це дозволяє модифікувати готовий звіт, завантажуючи потрібну сторінку в дизайнер. Крім того, можна описувати реакцію на клацання миші на необхідному об'єкті в режимі попереднього перегляду звіту. Це дозволяє легко організувати роботу програми, при якій клацання на об'єкті звіту викликає генерацію нового звіту з більш детальними відомостями по вибраному об'єкту.
Вікно попереднього перегляду FastReport відрізняється від використовуваних в інших генераторах. Зокрема, в FastReport використовується схема перегляду документа і навігації, прийнята в Microsoft Word: у вікні можна бачити відразу кілька сторінок. Крім того, реалізована можливість пошуку тексту у всьому документі.
Документація по FastReport
Документацію по FastReport можна знайти на сайті виробника.
Приклад внесення змін до звіту
Наприклад, потрібно внести зміни до звіту № 1807 «Дні народження» - додати до даних посада працівника.
- Заходимо в модуль «Особисті картки ». Вибираємо пункт меню Реєстр / Друк (клавіші F9). На екрані відкривається вікно " Вибір вихідної форми ".
- У вікні " Вибір вихідної форми " вибираємо пункт меню Реєстр / Меню (комбінація клавіш Shift + F4).
- У вікні « Налаштування меню звітів » знаходимо відповідну форму звіту №
1807 «Дні народження»:
- Необхідно встановити курсор на звіт і вибрати пункт меню Реєстр / Породити (комбінація клавіша Shift + Ins).
- У вікні « Породження форми звіту » внести найменування нового звіту, після чого натиснути кнопку « ОК ».
- На екрані розгортається вікно редагування звіту:
- Звіт формату -FR складається з декількох сторінок:
- сторінка з програмним кодом (на рис. вкладка " Код");
- сторінка з деталями (memo-поля), які друкуються (на рис. вкладка "Page1");
- сторінка, яка містить вікно запуску звіту і SQL-запит, який заповнює
деталі структури (на рис. вкладка " Page2"); \
- Переходимо на вкладку " Page2" на запит
Query1 (в нижній частині вікна) і розкриваємо його
для редагування натисканням клавіші Enter.
Відкривається редактор SQL-запитів.
- У SQL-запиті не вистачає поля з найменуванням посади, тому доповнюємо перелік полів (група SELECT) запиту, текстом «DOL.SPRD_NMFULL». Ім'я поля, яке необхідно додати визначається з бази даних (Карти даних (електронний опис бази даних) або опис бази в документі Керівництво програміста).
- Зберігаємо зміни запиту, натискаючи на кнопку «ОК» (вона має форму зеленої галочки в верхньому лівому кутку вікна редагування SQL-запиту).
- Переходимо на вкладку " Page1 " в центральну частину вікна. У рядку MasterDate1 в поле [Query1. "SPRPDR_NM"] натискаємо клавішу Enter для його редагування. Відкривається вікно « Редактор тексту».
- У вікні « Редактор тексту » ставимо курсор на першу позицію. Натискаємо на кнопку « Вставити вираз ». Зі списку виразів вибираємо поле SPRD_NMFULL і двічі натискаємо на ньому мишею. Натискаємо « ОК». Зберігаємо зміни у вікні « Вставити вираз », натискаючи на кнопку « ОК» (вона має форму зеленої галочки в верхньому лівому кутку вікна редагування).
- При необхідності в рядку PageHeader1 можна змінити назву стовпця, в якому додавали поле. Наприклад, змінюємо назву Підрозділ на Підрозділ і посаду.
- Зберігаємо зміни в звіті « Зберегти » (комбінація клавіша Ctrl + S або натиснути на малюнок з дискетою).
- Копіюємо звіт в меню звітів (Реєстр / Копіювати F5).
- Звіт готовий до виконання.
- Переходимо на вкладку " Page2" на запит
Query1 (в нижній частині вікна) і розкриваємо його
для редагування натисканням клавіші Enter.
Відкривається редактор SQL-запитів.
- Звіт формату -FR складається з декількох сторінок: