л.р.7 - Разработка отчетов в Rave Reports 5.0
==== Описание проекта. ===
Работа проделана большая, но сделано не все...
0. Скачайте нужный Вам вариант
базы данных (все БД содержат одни и те же таблицы).
Для работы проекта необходима BDE.
1. Вначале выбрать псевдоним (алиас):
- kassa4 - связан с БД в папке BD_kassa
Бд содержит проверку значений, индексы, проверку
ссылочной целостности - все это в БД, т е на уровне BDE.
- kassa5 - связан с БД в папке BD_kassa5
Нет проверок, индексов, проверок целостности, но есть
пароли. Основной среди них: krolik
- kassa_ - связан с БД в папке BD_kassa_
Нет проверок, индексов, проверок целостности, нет паролей.
2. Затем - выбрать отчет, щелкнуть "Выдать отчет ..."
3. В результате в папке появляются отчеты .ndr,
кнопка "Прочесть" читает их. Прочтенный файл можно:
- просмотреть. При этом доступны настройки
- записать отчет в форматах: .html, .rtf, .pdf
============= Отчет по лаб 7: =============
В среде Rave Reports 5.0 созданы 3 отчета:
1. Отчет _Lekarstva - отчет по одной таблице
Lek_List
2. Отчет _Kategor_Lekar - отчет по двум связанным
таблицам. Master: табл. Kategorii, Detail: табл Lek_List.
Вычисляются: минимальная и максимальная цена лекарств
для каждой категории.
3. Отчет _Lek_Ostatki. Данные получены от компонента
TQuery, SQL которого содержит:
Select Ostatok, Nazvan1, Nazvan2, Nazvan3
from Lek_list, Sklad
where Sklad.Lek_Id = Lek_List.Lek_Id
order by Ostatok
то есть отчет содержит список лекарств и остатков
этих лекарств на складе.
4. Продемонстрировать использование двух способов соединения
с источником данных (соединение через драйвер Rave Reports и
соединение через компонент Rave Reports и компонент набора
данных в приложении Delphi).
- соединение через драйвер Rave Reports: отчет Clients,
работает нормально.
- соединения через компоненты TRvTableConnection - отчеты
_Lekarstva, _Kategor_Lekar,
TRvQueryConnection - отчет _Lek_Ostatki.
5. Продемонстрировать использование компонентов управления
отчетами вкладки Rave среды Delphi.
- В проекте работает вывод отчета следующим образом:
- одновременно с предварительным просмотром отчет
сохраняется в файле .ndr
- из этого файла отчет прочитывается компонентами RvRender:
- Preview,
- HTML
- RTF
- PDF
-----------------------------
Однако при этом имеются недочеты:
- компонент Preview показывает только 1-ю страницу
- HTML - последнюю страницу
- RTF - Обрезает некоторые слова справа.
- PDF - неверный шрифт.
------------------
В Интете есть мнение, что эта версия Rave Reports 5.0
дефектная и рекомендуется обновление на
http://se-ed.net/thaidelphicc/xml/updatepack/
Однако этот сайт на ужасном языке, трудно разобраться.
Именно этой ссылки нет.
( вопрос 27089 Круглый стол, http://www.delphikingdom.com )
============= Примечания, заметки: ===================
1. Справка Делфи по Rave часто не соответствует факту.
Подлинный список свойств и методов объектов Rave можно
получить из автозавершения, в редакторе.
Мануалы можно прочесть на сайте А.Подгорецкого
(www.podgoretsky.com) или в drkb.
Интересная статья об изучении объектов Rave есть на
delphimaster.ru (Работа с отчетами Rave Report в режиме RunTime,
автор - Турушев Виталий).
Искать решения проблем можно на официальном сайте разработчика.
Одна из проблем:
http://www.nevrona.com/Default.aspx?tabid=101
-------------
2.Оказывается, свойствам объектов Rave Reports
нужно больше внимания. При просмотре примеров -
см св-ва, выделенные жирным (и другие - тоже)
- чтобы в отчете появились данные из таблицы,
нужно в объекте DataBAnd запонить св-во DataView
(выбрать из списка доступных)
3. Форма с объектами TRv**Connection (Делфи - проект)
должна быть включена в проект Делфи
(Project|Add to Project), чтобы работал просмотр отчетов
в среде Rave.
4. Чтобы Band2 печатался на каждой странице, нужно:
- BandStyle= [B1P] (т е Body Header+First+NewPage)
- Controller Band = Band с данными.
- Controller Band (заголовка) = Band с данными.
==== Пример: Master-Detail ==========
Источники данных (в примере):
- Master: CustomerDV <- (на форме:) CustomerCXN <- CustomerTable
- Detail: OredersDV <- (на форме:) OrdersCXN <- OrdersTable
---------- для лаб7: -----------------
1********
Источники данных:
- Master: KategorDV <- (на форме:) KategorCXN <- tabKategor
( Перед добавлением KategorDV таблицу tabKategor сделать активной )
- Detail: LekarDV <- (на форме:) LekarCXN <- tabLekar
( Перед добавлением ... таблицу ... сделать активной )
2********
Удобно копировать настроенные объекты DataText, Text (Ctrl-C, Ctrl-V)
3*****
Программа может выбирать алиасы. При этом в табл. Lek_List
последняя запись содержит признак алиаса: метка алиаса4,5,_
Пароль к алиасам 4,5 присвоен свойству компонента Session.
Screens