Создание отчета. Мастер создания отчетов.
Перед созданием отчета необходимо разместить на форме и настроить соответствующим образом один из следующих компонентов: TDatabase, Ttable, TQuery. Мы используем уже имеющийся компонент TQuery и один из имеющихся компонентов TTable. Добавим на основную форму или в модуль данных компонент TRVDataSetConnection для организации связи будущего отчета с базой данных. Добавим на форму также компонент TRVProject для установки связи с файлом отчета, который еще предстоит сформировать.
Для разработки внешнего вида отчета вызовем Rave-проектировщик (Rave Reports Designer) командой Tools Rave Designer. Окно проектировщика состоит из 4 основных частей. В верхней части расположены кнопки управления и панели компонентов. В центре можно видеть проектируемый отчет. На второй вкладке Event Editor центральной части окна можно написать код для обработчиков событий OnBeforePrint, OnBeforeReport, OnAfterPrint, OnAfterReport, OnGetText для любого размещенного на вкладке Page Designer компонента отчета. Обработчики пишутся на языке, который представляет собой подмножество языка Delphi.
С помощью команды File New Data Object вызовем окно типов связи и выберем в нем Direct Data View (прямой обзор данных). В следующем окне выберем соединения с СУБД, доступные на данный момент в среде Delphi (у нас это связь RvDataSetConnection1).Теперь структуру установленной связи (она получила название DataView1) можно посмотреть в правой части Rave-редактора.
Командой Tools Report Wizards Simple Table вызовем мастер создания отчета по данным, получаемым из единственной таблицы (для этого временно в свойстве DataSet объекта RvDataSetConnection1 необходимо установить Table1или DM.Tovar). Этот мастер с помощью последовательно раскрывающихся окон определяет основные параметры отчета. В первом окне выбирается источник данных (DataView1), во втором – отображаемые поля (отметьте флажками необходимые поля или установите флажок All). В следующих окнах мастера можно изменить порядок следования в отчете заданных полей, ввести заголовок отчета (в поле ReportTitle), указать границы печатаемой страницы и задать шрифты различных разделов. Не все шрифты (например, устанавливаемый по умолчанию Arial) правильно отображают кириллицу. Необходимо выбрать такой шрифт, чтобы исключить искажение данных (например, MS Sans Serif). После нажатия в последнем окне кнопки Generate отчет будет создан и размещен в окне утилиты Rave Designer.
В одном проекте может быть несколько различных отчетов. Список доступных отчетов можно посмотреть в правом окне в элементе Report Library.
Созданный шаблон с нашим отчетом необходимо сохранить с помощью команды File Save, например, с именем MyReport. Файл отчета получит расширение .rav.
Пример.Выбор пункта Отчет Наличие товаров.
DM.RvProject1.Close;
DM.RvDataSetConnection1.DataSet:=DM.Tovar;
DM.RvProject1.ProjectFile:='E:\MyRep.rav';
DM.RvProject1.Execute;
Но путь к файлу отчета можно получать и динамически, для этого файл отчета располагаем в той же папке, где лежит exe-файл и вместо третьей строке в вышеприведенном примере записываем:
DM.RvProject1.ProjectFile:=ExtractFilePath(Application.ExeName)+'MyRep.rav';
№58. Изменение отчета
1) Укажем дату генерации отчета. Ее можно разместить под заголовком или внизу страницы. Текущая дата доступна в компонентеDataText палитры RAVE Designer (вкладка Report) . В его свойстве DataField поместим следующий текст:
"ОТ" &Report.DateLong
Можно сформировать значения поля и по-другому – раскрыть редактор поля, (в правом углу свойства DataField), в поле DataText окна редактора ввести ‘от’+, раскрыть список Report Variables и выбрать в нем пункт DateLong, после чего щелкнуть на кнопке Insert Report Var. В результате выводится дата в длинном формате (ДД месяц ГГГГ).
2) Введем нумерацию страниц. Чтобы вставить в отчет нумерацию страниц необходимо предусмотреть в проекте страницы место для размещения компонента DataText. Мастер отчетов отвел для заголовков и данных всю страницу. Щелкнем на компоненте DataViewRegion в дереве объектов (предварительно раскрыв узлы Report Library à Report1 àMainPage) и установим в его свойстве Height, например, знаечение 7.9. Под серым пространством в самом конце страницы необходимо вставить компонент DataText и в его свойстве DataField поместить следующую строку:
'стр.'+Report.RelativePage+'из'+Report.TotalPages
3) Изменение формата вывода данных. Можно изменять место расположения компонент Text, DataText, выравнивание текста. Изменить формат вывода данных можно в свойстве DataField компонента DataText. Можно также изменять текст заголовков столбцов в свойстве Text компонента Text.
4) Расчертим отчет горизонтальными и вертикальными линиями. Для этого необходимо поместить на среднюю полосу (объект DataView1Band в дереве объектов) компонент Hline и необходимое количество компонентов Vline (вкладка Drawing). Для правильного отображения вертикальных и горизонтальных линий необходимо определённым способом задать их свойства Top, Left, Width. На нижнюю полосу с данными поместим 2 компонента Hline и столько же компонентов VLine, как и на среднюю полосу.
№59 Группирующий отчет.
В свойстве DATASet объекта RVDataSetConnection1? Установим Query1. Предварительно в свойстве SQL объекта Query1 запишем необходимый запрос и Active := true. Теперь создадим новый объект данный DataView2 в Rave Designer ( команда New Data Object)
Группирующими называют отчеты в которых вся информация разделяется на группы данных, объединенных каким-то общим признаком. Спецификой группирующего отчета явл то, что полосы с данными, относящимся к какой-то группе должны указывать на объект отображения данных в своем свойстве GroupView и на поле группировки в свойстве GROUPKEY. Поле группировки – это поле изменения значения которого означает конец предыдущей группы и начала следующей. Обычно такое поле указывается первым в секции Order By или Group By SQL запроса
Пример
Получим список всех проданных товаров с группировкой по проавцам. В свойстве SQL оъекта Query1 запишем заврос :
SELECT FIO,NAimen, Sum(kolkupl)
FROM Tover, Prodazha, Sotrudnikik
WHERE ( prodazha.kodT = Tovar.KodT) AND (Prodazha.KodSotr = Sotrudniki.KodSotr)
GROUP By FIO, Naimen
ORDER BY FIO DESC
Группирующим поле будет поле FIO
Дата добавления: 2017-02-20; просмотров: 594;