Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС_проект_ИС.doc
Скачиваний:
18
Добавлен:
11.08.2019
Размер:
3.38 Mб
Скачать

7.4.3. Группирующий отчет

Группирующими называют отчеты, в которых вся информация разделяется на группы данных, объединенных каким-то общим признаком. Например, список книг, упорядо­ченный по издательствам. Правила создания группирующих отчетов можно найти в работе [8].

7.5. Пример создания отчетов в приложении Sale

В качестве примера рассмотрим процедуру создания трех простых отчетов, основанных на таблице Zakazcik и запросах по неоплаченным накладным. Откроем модуль данных dmSaleUnit. Добавим на форму модуля данных компонент RvDataSetConnection1 для организации связи первого отчета с таблицей базы данных. Выберем для свойства DataSet компонента значение Zakazcik.

Добавим на форму модуля данных компонент RvQueryConnection1 для организации связи второго отчета с первым запросом (частично и полностью оплаченные накладные). Выберем для свойства Query компонента значение Query1. Добавим на форму компонент RvQueryConnection2 для организации связи третьего отчета со вторым запросом (неоплаченные накладные). Выберем для свойства Query компонента значение Query2. Сохраним все сделанные изменения.

Спроектируем внешний вид первого отчета. Для этого вызовем визуальный Rave-проектировщик Rave Visual Designer командой Tools > Rave Designer.

Дадим команду File > New Data Object (Файл > Новый объект данных) и в окне типов связи (рис. 44) выберем строку Direct Data View (Прямой обзор данных).

Р ис. 44. Выбор типа связи

В следующем окне (рис. 45) будет предложено выбрать соединения с СУБД, доступные на данный момент в среде Delphi. В первом случае это связь RvDataSetConnection1. Теперь структуру установленной связи (она получила название DataView1) можно посмотреть в правой части Rave-редактора.

Рис. 45. Структура связи с СУБД

Подготовим табличную форму отчета с помощью мастера. Для этого выполним команду Tools > Report Wizards > Simple Table и выберем в диалоговом окне название объекта DataView1. В следующем окне будет предложено отметить поля таблицы, которые желательно видеть в отчете.

На следующих этапах работы мастера заданные поля можно будет отсортировать, ввести название отчета, указать границы печатаемой страницы и задать шрифты различных разделов. После нажатия кнопки Generate отчет будет создан и размещен в центре виртуальной страницы. Отредактируем шаблон отчета вручную (заголовки, положение колонок, разделяющие линии и т. д.).

Созданный шаблон с отчетом (Rave-проект) следует сохранить в папке C:\ Sale с помощью стандартной команды File > Save с названием, например, RaveProject1. Файл проекта получит расширение .rav. Список доступных отчетов можно посмотреть в правом окне в элементе Report Library. Пока там доступен отчет Report1.

Создадим шаблон второго отчета командой File > New Report. Выберем связь RvQueryConnection1. Cтруктуру установленной связи (DataView2) можно посмотреть в правой части Rave-редактора. Спроектируем с помощью мастера внешний вид второго отчета. Сохраним созданный шаблон отчета (Report2) в том же проекте RaveProject1.

Создадим шаблон третьего отчета командой File > New Report. Выберем связь RvQueryConnection2. Cтруктуру установленной связи (DataView3) можно посмотреть в правой части Rave-редактора. Спроектируем с помощью мастера внешний вид третьего отчета. Сохраним созданный шаблон отчета (Report3) в том же проекте RaveProject1.

Печать отчетов будет осуществляться выбором необходимых элементов контекстных меню соответствующих форм. Вернемся в Delphi, откроем модуль fmZakUnit и добавим на форму компонент RvProject1 (Rave-Проект). Свойство Project File (Файл проекта) настроим на подготовленный файл C:\ Sale \ RaveProject1. Затем добавим на форму компонент PopupMenu1. В свойстве PopupMenu формы FZak выберем PopupMenu1. Щелкнем на компоненте PopupMenu1 и в его контекстном меню выберем пункт Menu Designer. Для первого элемента меню (объект N1) в свойстве Caption укажем – «Печать отчета». Напишем процедуру обработки события OnClick для этого элемента меню:

procedure TFZak.N1Click(Sender: TObject);

begin

RvProject1.ExecuteReport('Report1');

end;

В нем происходит обращение к методу ExecuteReport компонента RvProject, по которому строится и вызывается для просмотра и печати указанный отчет.

Откроем модуль fmQuery1Unit и добавим на форму компонент RvProject1. Свойство Project File настроим на файл C:\ Sale \ RaveProject1. Затем добавим на форму компонент PopupMenu1. В свойстве PopupMenu формы FQuery1 выберем PopupMenu1. Щелкнем на компоненте PopupMenu1 и в его контекстном меню выберем пункт Menu Designer. Для первого элемента меню (объект N1) в свойстве Caption укажем – «Печать отчета». Напишем процедуру обработки события OnClick для этого элемента меню:

procedure TFQuery1.N1Click(Sender: TObject);

begin

RvProject1.ExecuteReport('Report2');

end;

Откроем модуль fmQuery2Unit и добавим на форму компонент RvProject1. Свойство Project File настроим на файл C:\ Sale \ RaveProject1. Затем добавим на форму компонент PopupMenu1. В свойстве PopupMenu формы FQuery2 выберем PopupMenu1. Щелкнем на компоненте PopupMenu1 и в его контекстном меню выберем пункт Menu Designer. Для первого элемента меню (объект N1) в свойстве Caption укажем – «Печать отчета». Напишем процедуру обработки события OnClick для этого элемента меню:

procedure TFQuery2.N1Click(Sender: TObject);

begin

RvProject1.ExecuteReport('Report3');

end;

В о время работы приложения отчет можно вывести на печать, в файл или просмотреть перед выводом (рис. 46).

Рис. 46. Просмотр отчета перед выводом на печать