- •1.2. Установка рабочей директории
- •1.3. Создание таблиц базы данных
- •1.4. Установление связей между таблицами (определение ссылочной целостности)
- •1.6. Запуск сервера Firebird
- •1.7. Создание базы данных Firebird
- •1.8. Подключение базы данных Firebird
- •1.9. Создание и редактирование таблиц Firebird
- •1.10. Связи между таблицами Firebird
- •1.11. Перенос базы данных на другой компьютер
- •2.1. Создание формы для работы с одной таблицей
- •2.2. Ввод данных в таблицу с помощью созданной формы
- •2.3. Создание формы для работы с двумя таблицами
- •2.4. Редактирование формы
- •2.5. Ввод данных через отдельные компоненты
- •2.6. Редактирование данных через компоненты
- •3. Реализация сортировки, вычислений и фильтрациИ данных
- •3.1. Реализация сортировки
- •3.1. Вид формы для сортировки
- •1 Вариант – с использованием имени индекса:
- •2 Вариант - с использованием имени поля, по которому создан индекс:
- •3.2. Реализация вычислений
- •3.3. Реализация фильтрации записей
- •4.3. Создание запроса с групповыми вычислениями
- •4.4. Создание параметрического запроса
- •4.5. Параметрический запрос для поиска поля, выбранного из списка
- •5.1. Создание отчета в Delphi
- •5.2. Создание отчета на основе одной таблицы
- •5.3. Создание отчета с группировкой записей по определенному полю
- •Список книг
- •5.4. Создание отчета на основе параметрического запроса
- •Разработка автоматизированной системы продажи железнодорожных билетов
- •Справка о проданных билетах
- •Справка об остановках маршрута
- •Справка о продаже билетов
- •Справка о расписании групп
- •Списки групп
- •Тренеры
- •Списки больных, стоящих на учете
- •Список сотрудников
- •Список больных
- •Разработка приложения «Больница»
- •Медицинский персонал
- •Процедуры
- •Список больных
- •Разработка автоматизированной системы продажи авиационных билетов
- •Продажа билета
- •Список самолетов
- •Список автомобилей
- •Список водителей
- •Транзисторы
- •Справка о продаже транзисторов
- •Заказы на ремонт
- •Выпрямительные диоды
- •Закупка приборов
- •Список устройств
- •Расходная ведомость
- •Библиографический список
- •Оглавление
5.3. Создание отчета с группировкой записей по определенному полю
Предположим, что существует следующее задание:
Создать отчет на основе таблицы «Книги», записи сгруппировать по области знаний, рассчитать стоимость книг по каждому шифру книги, по группе записей из одинаковой области знаний и ведомости в целом:
Список книг
Шифр книги |
Название |
Авторы |
Кол-во экз. |
Цена |
Стоимость книг |
Область знаний |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
Итого |
|
||||
Общий итог |
|
Порядок создания отчета с группировкой записей следующий.
1. Первоначально, следует создать запрос на выборку данных из таблиц Разделы знаний (Razd_zn) и Книги (Knigi) с созданием вычисляемого поля «Стоимость книг» и сортировкой данных по полю «Область знаний».
Чтобы создать запрос необходимо поместить на главную форму компонент Query из закладки BDE - . В свойстве DataBaseName выбрать имя базы данных. В свойстве 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
Активировать запрос, выбрав в свойстве Active - true.
2. После создания запроса следует поместить на главную форму компонент RvQueryConnections из закладки Rave - . В его свойстве Query необходимо указать имя запроса – Query1.
3. Затем необходимо перейти в утилиту создания отчетов RaveDesigner, выбрав пункты меню Tools/Rave Designer.
Дальнейшие действия осуществляются утилитой Rave Designer.
4. Если при загрузке Rave Designer открылся какой-то отчет, то следует выбрать пункт меню File/New. Откроется окно создания нового отчета.
Следующий шаг – создание источника данных для отчета. Для этого выбирают пункт меню File/New Data Object. В открывшемся окне со списком необходимо выбрать Direct Data View и нажать кнопку «Next». В появившемся окне следует выбрать RvQueryConnection1 и нажать кнопку «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 или какой-то другой), в свойстве DataField – Stoim (поле «Стоимость»), в свойстве Controller – CalcController1 (чтобы связать поле с областью данных).
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; (или RvProject2.Execute;)
После запуска программы при выборе определенного пункта меню или при щелчке по кнопке появится окно просмотра отчета (рис. 5.2).
Рис. 5.2. Окно просмотра отчета