- •О. Б. Малков работа с базами данных в среде delphi Учебное пособие для студентов заочной формы обучения
- •Содержание
- •1. Реализация работы с базами данных в среде delphi
- •1.1. Базы данных и системы управления базами данных
- •1.2. Технология доступа к данным bde
- •1.3. Компоненты приложений, работающих с базами данных
- •2. Демонстрационная база данных
- •2.1. Логическая модель данных предметной области
- •2.2. Физическая модель данных предметной области
- •3. Создание базы данных
- •3.1. Создание псевдонима
- •3.2. Создание структуры таблиц базы данных
- •3.3. Свойства таблиц Paradox
- •3.4. Заполнение таблиц базы данных
- •4. МодулЬ данных
- •4.1. Создание модуля данных
- •4.2. Связывание наборов данных
- •4.3. Создание объектов-полей
- •4.4. Проектирование и анализ структуры базы данных
- •4.5. Создание объектов-столбцов
- •4.6. Реализация бизнес-правил
- •5. Создание приложения, работающего с базой данных
- •5.1. Выбор типа пользовательского интерфейса
- •5.2. Создание главной формы
- •5.3. Создание рабочих форм
- •5.4. Создание форм ввода новых данных
- •6. Создание запросов
- •6.1. Компонент Query
- •6.2. Создание sql-запросов
- •6.2.1. Простая выборка данных
- •6.2.2. Выборка из связанных таблиц
- •6.2.3. Сортировка записей
- •6.2.4. Сложные критерии отбора
- •6.2.5. Псевдонимы таблиц и комментарии
- •6.2.6. Агрегатные функции и группировка записей
- •6.2.7. Создание и удаление таблиц и индексов
- •6.2.8. Вставка, удаление и редактирование записей
- •Insert into Имя_таблицы (Список_полей
- •Values (Список_значений)
- •6.3. Построение запроса в демонстрационной базе данных
- •7. Создание отчетов
- •7.1. Основы технологии Rave Reports
- •7.2. Визуальная среда Rave Designer
- •7.3. Составляющие проекта отчета
- •7.3.1. Библиотека отчетов
- •7.3.2. Каталог глобальных страниц
- •7.3.3. Каталог объектов данных
- •7.4. Типы отчетов
- •7.4.1. Отчет с единственной таблицей или запросом
- •7.4.2. Отчет главный-детальный
- •7.4.3. Группирующий отчет
- •7.5. Пример создания отчетов в приложении Sale
- •7.6. Экспорт отчета в файл
- •8. Создание СправочнОй системЫ
- •8.1. Создание файла документа справочной информации
- •8.2. Создание проекта справочной системы
- •8.3. Доступ к справочной информации
- •9. Создание установочного диска
- •9.1. Программа InstallShield Express
- •9.2. Создание проекта инсталляционной программы
- •Библиографический список
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. Просмотр отчета перед выводом на печать