Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД_Delphi_Теория_Контр_работа.doc
Скачиваний:
34
Добавлен:
31.05.2015
Размер:
3.15 Mб
Скачать

5.2. Создание отчета с группировкой записей по определенному полю

Предположим, что существует следующее задание:

Создать отчет на основе таблицы «Книги», записи сгруппировать по области знаний, рассчитать стоимость книг по каждому шифру книги, по группе записей из одинаковой области знаний и ведомости в целом:

Список книг

Шифр книги

Название

Авторы

Кол-во экз.

Цена

Стоимость книг

Область знаний

Итого

Общий итог

Порядок создания отчета с группировкой записей следующий.

1. Первоначально, следует создать запрос на выборку данных из таблиц Разделы знаний (Razd_zn) и Книги (Knigi) с созданием вычисляемого поля «Стоимость книг» и сортировкой данных по полю «Область знаний».

Чтобы создать запрос необходимо поместить на модуль данных компонент ADOQuery из закладки ADO. Для данного компонента настроить следующие свойства: в свойстве Connection выбрать ADOConnection1; в свойстве SQL щелкнуть по кнопке и в открывшемся окне набрать запрос на языке SQL; в свойстве Active выбрать true

В данном примере в свойстве SQL компонента можно ввести запрос следующего вида (щелкнув по кнопке …):

SELECT R.R_zn, K.Sh_kn, K.Nazv, K.Avt, K.Kol_ikz, K.Zena, (K.Zena*K.Kol_ikz) As Stoim

FROM Knigi K, Razd_zn R

Where K.Kod_r = R.Kod_r

ORDER BY R.R_zn

Во вкладке Events модуля данных для программной активации запроса необходимо в событии onCreate в процедуре обработки события дописать:

ADOQuery1.Active := true;

Номер компонента может быть отличным от единицы.

2. После создания запроса следует поместить на главную форму (где находится меню) компонент RvDataSetConnection1 из закладки Rave. В его свойстве DataSet необходимо выбрать имя_модуля_данных.ADOQuery. Предварительно в тексте программы для главной формы в разделе implementation необходимо выставить uses unit2 (если модуль данных был создан вторым).

3. Затем необходимо перейти в утилиту создания отчетов RaveDesigner, выбрав пункты меню Tools/Rave Designer.

Дальнейшие действия осуществляются утилитой Rave Designer.

4. Если при загрузке Rave Designer открылся какой-то отчет, то следует выбрать пункт меню File/New. Откроется окно создания нового отчета.

Следующий шаг – создание источника данных для отчета. Для этого выбирают пункт меню File/New Data Object. В открывшемся окне со списком необходимо выбрать Direct Data View и нажать кнопку «Next». В появившемся окне следует выбрать RvDataSetConnection1 и нажать кнопку «Finish».

5. Далее необходимо сформировать структуру отчета. На пустую область отчета следует поместить компонент Region из закладки Report - . Все компоненты структуры данных отчета будут наноситься на этот компонент. КомпонентRegion (серого цвета) следует растащить по всему белому листу, оставив небольшие белые поля.

6. На компонент Region нужно поместить несколько компонентов Band и один компонент DataBand из закладки Report - ив следующем порядке.

Band1 – здесь будет размещаться заголовок отчета;

Band2 – шапка таблицы отчета;

Band3 – значение поля группировки данных отчета;

DataBand1 – данные отчета;

Band4 - итог по группам данных отчета;

Band5 – общий итог по данным отчета.

7. Теперь необходимо настроить свойства компонентов структуры отчета.

Для компонента Band1 следует выбрать свойство BandStyle и щелкнуть по кнопке . В открывшемся окне в группе опцийPrint Location надо включить опцию Body Header. Аналогично следует включить опцию:

для Band2 – Row Header;

для Band3 – Group Header;

для Band4 – Group Footer;

для Band5 – Body Footer.

Для компонента DataBand1 необходимо в свойстве DataView указать значение DataView1 (или DataView2, в зависимости от имени источника данных).

8. На компонентах Band1 и Band2 (заголовок и шапка таблицы отчета) следует разместить компоненты Text из закладки Standard () и задать им необходимые значения (например: в свойствеText указать название; в свойстве Font выбрать шрифт MS Sanc Serif и другие характеристики шрифта; в свойстве FontJustify указать выравнивание). Для прорисовки шапки таблицы следует воспользоваться компонентами HLine и VLine из закладки Drawing (и).

9. Для настройки заголовка и итога группы используют компоненты Band3 и Band4. В свойстве GroupDataView обоих компонентов следует указать DataView1 (или другой источник данных), а в поле GroupKey – R_zn (R_zn - это поле «Раздел знаний», по которому будет осуществляться группировка данных). В поле ControllerBand следует указать DataBand1 (область данных, которая будет группироваться).

Для вывода на экран значения поля группировки на компонент Band3 следует поместить компонент DataText из закладки Report (). В его свойствахDataView и DataField следует указать источник данных (DataView1 или какой-то другой) и R_zn соответственно.

10. На компоненте DataBand1 следует разместить компоненты DataText для отображения значений полей данных таблицы. В его свойствах DataView и DataField следует указать источник данных (DataView1 или какой-то другой) и выбрать имя поля из списка. Также для подсчета итоговой суммы по полю «Стоимость» на DataBand1 следует поместить компонент CalcController из закладки Report (). Он является невидимым компонентов – к его свойствам можно обратиться только через дерево объектов (находится в правой части экрана). В данном случае, изменение свойств этого компонента не требуется.

11. На компоненте Band4 (итог по группам) следует разместить компонент CalcText из закладки Report (). В его свойствеDataView следует указать источник данных (DataView1 или какой-то другой), в свойстве DataFieldStoim (поле «Стоимость»), в свойстве ControllerCalcController1 (чтобы связать поле с областью данных).

12. Аналогичные операции следует проделать и на компоненте Band5 (общий итог), поместив на нем компонент CalcText (настройки его свойств будут такими же).

13. Можно также добавить ряд поясняющих надписей (компонент Text).

14. Далее следует сохранить отчет с помощью команды меню File/Save, задав файлу проекта какое-либо имя (например Project1.rav или Project2.rav, или какое-то другое).

Закрыть утилиту RaveDesigner и вернуться в Delphi.

Вид отчета в режиме редактирования представлен на рис. 5.1.

Рис. 5.1. Вид отчета в режиме редактирования

15. Затем следует поместить на форму, где находится главное меню, компонент RvProject из закладки Rave (). В его свойствеProjectFile следует указать имя файла проекта отчета и путь к нему.

16. Создать в программе обработчик нажатия какой-либо кнопки или выбора пункта меню, вызывающего отчет, и включить в него следующую строчку:

RvProject1.Execute;

После запуска программы при выборе пункта меню, вызывающего отчет, или при щелчке по кнопке появится окно просмотра отчета (рис. 5.2).

Для формирования автоматического поиска места нахождения отчета (файл отчета должен быть сохранен в папке вместе с проектом и файлом project1) необходимо для формы, где вызывается отчет, на событии формы onShow создать следующую процедуру:

Var

Path : string;

Begin

Path := ExtractFilePath(Application.ExeName);

RvProject1.ProjectFile := Path + ‘Project1.rav’;

End;

В данном тексте Project1.rav – имя файла отчета.

Рис. 5.2. Окно просмотра отчета

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