Лабораторная работа№ 15
Создание отчетов в Delphi
С.В. Каверин
Цель работы: Научиться создавать отчеты к базам данных в среде программирования Delphi используя экспортирование данных в Excel.
Постановка задачи. Интерфейс рабочего окна формы «Отчет по товарам», приведен на рисунке 1.
[pic]
Рисунок 1 – Интерфейс окна формы «Отчет по товарам»
Отчет будет содержать шесть столбцов. Данные для отчета берутся из сетки DBGrid1, записи которой формируются SQL-запросом в DBQuery3 при создании Form6 (событие FormCreate). Запрос содержит семь полей из таблиц Товары, Поставщик и Поставка.
Код SQL-запроса (в название поля включается название таблицы):
[pic]
Поле Товары.Описание в Отчет не входит.
Значение полей выделенной курсором записи отображаются в компонентах DBEdit1- DBEdit6 и DBМемо1 (для поля Описание). В компонентах Label прописан поясняющий текст (синим и красным цветом).
Записи отсортированы по полю НаименованиеТовара.
1 Создание окна «Отчет по товарам»
Действия, проводимые ниже, более подробно рассматриваются в лабораторной работе №14.
1.1 Создаем Form6 (File -> New-> Form-Delphi), сохраняем как Unit6.
1.2 Устанавливаем свойство Form6.Caption = Отчет по товарам.
1.3 Знакомим Form6 с Form1 и DatMod (с помощью File->Use Unit..).
1.4 Переходим на Form1. В Меню приложения добавляем новую закладку Отчеты -> Отчет по Товарам.
1.5 Дважды кликаем по пункту меню Отчет по Товарам и в обработчике события OnClick пишем код:
[pic]
1.6 Переходим на Form6. Положите на Form6 компонент DBMemo (закладка Data Controls), шесть компонент DBEdit (закладка Data Controls), сетку DbGrid (закладка Data Controls), семь меток Label (закладка Standard) с соответствующими надписями синего цвета и кнопку Button (закладка Standard) с надписью «Создать отчет Excel». Расположите выбранные компоненты также, как на рисунке 1.
1.7 Сохраняем проект (File -> Save All) и компилируем (F9).
2 Создание запроса «Отчет по товарам»
2.1 На модуль dm положите компонент ADOQuery ((закладка dbGo) и источник DataSource (закладка DataAccess), которому дайте имя dsQuery3.
2.2 Устанавливаем свойства
2.3 Переходим на Form6 и выделяем DbGrid1. В инспекторе DbGrid1 установите свойство DataSource = dsQuery3.
2.4 Переходим на dm. Выделяем компонент ADOQuery3 и кликаем в свойстве SQL по строке TWideStrings. В окне редактора SQL-запросов пишем код для отчета по товарам (см. рисунок 2). Нажимаем OK.
[pic]
Рисунок 2 – Окно редактора SQL-запросов с кодом
2.5 В Инспекторе ADOQuery3 устанавливаем свойство: Active = True.
2.6 Сохраняем проект (File -> Save All) и компилируем (F9).
2.7 Переходим на Form6 и выделяем DBMemo1. Устанавливаем свойства:
2.8 Выделяем DBEdit1. Устанавливаем свойства:
2.9 Аналогично установите свойства для DBEdit2- DBEdit6.
2.10 По желанию можно провести форматирование колонок в DBGrid1.
2.11 В ADOQuery3 проверьте свойство: Active = True.
2.12 Сохраняем проект (File -> Save All) и компилируем (F9).
Окончательный вид окна «Отчет по товарам» приведен на рисунке 3.
[pic]
Рисунок 3 – Вид окна «Отчет по товарам»
3 Создание отчета в Excel
При нажатии на кнопку «Создать отчет в Excel» данные из DBGrid1 должны быть импортированы в Книгу Excel. Передача данных осуществляется по Com-технологии. Функции для работы с Com-объектами находятся в модуле ComObj, которых необходимо будет подключить к приложению.
3.1 Переходим на Form6. Выделяем Button1 (Создать отчет в Excel).
3.2 Создаем обработчик события OnClick компонента Button1 (двойным щелчком по кнопке) и переходим в редактор кода (окно Code).
3.3 В блок Uses добавляем модуль ComObj.
[pic]
3.4 В процедуре обработки события Button1Click пишем код с подробным комментарием:
[pic]
[pic]
[pic]
Замечание. При вводе кода некоторых свойств будут идти сообщения типа «Неизвестный...», путем красного эффекта подчеркивания. Это просто Delphi пока не видит листов и ячеек созданной книги Excel.
3.5 Сохраняем проект (File -> Save All) и компилируем (F9).
3.6 Запустите проект. Выберите пункт Отчеты->Отчет по товарам и нажмите кнопку Создать отчет в Excel. Появится книга Excel (см. рисунок 4) с одним листом Отчет, который можно редактировать и сохранить.
[pic]
Рисунок 4 – Вид отчета в Excel
4 Задания для самостоятельной работы
Усовершенствуйте проект своего варианта задания, организуя выборку данных SQL-запросом, и созданием отчета в Excel по этим данным.
Литература
Фленов М.Е. Библия Delphi //СПб.: БХВ-Петербург.-2011.-688с.