Автор работы: Пользователь скрыл имя, 01 Апреля 2014 в 14:21, контрольная работа
Цель работы: Изучить технологию формирования отчетов в среде визуального программирования.
Лабораторная работа №6: Работа с отчётами
Цель работы: Изучить технологию формирования отчетов в среде визуального программирования.
1. ПОСТАНОВКА ЗАДАЧИ
Необходимо сформировать отчет к БД содержащей сведения по успеваемости курсантов содержащий список оценок (База данных состоит из одного отношения (табл. 1.1)
Отчет должен выводить данные об успеваемости курсантов по дисциплинам
Отчет должен выводить следующую информацию: ФИО студентов, Наименование дисциплины, Оценка.
Таблица 1
Успеваемость студентов.
ФИО курсанта |
Наименование дисциплины |
Оценка |
Иванов И.И. |
Информатика |
2 |
Иванов И.И. |
Математика |
4 |
Петров П.П. |
Физика |
5 |
Итого оценок: 3
2. СОЗДАНИЕ ОТЧЕТОВ В DELPHI 6
В большинстве случаев данные, которые хранятся в таблицах БД, необходимо тем или иным способом публиковать, создавая так называемые отчеты. Уже в первую версию Delphi были включены средства генерации отчетов — утилиты Report-Smith и ReportSmith Run Time Viewer. Это были автономные средства, никак не связанные со средой Delphi. Более того, утилита ReportSmith Run Time Viewer должна была наравне с BDE поставляться вместе с программой. Все это затрудняло использование этих средств, поэтому уже начиная со второй версии в Delphi были включены специальные компоненты для генерации отчетов, разработанные независимой компанией QuSoft AS (Норвегия). Переход на компонентный уровень позволил использовать естественную для Delphi технику визуального программирования, что существенно упростило как разработку программ, так и их распространение, — компоненты являются встроенными в программу «кирпичиками» и не нуждаются в каких-либо внешних средствах (таких, как утилита Report-Smith Run Time Viewer) для выполнения возложенных на них задач. От версии к версии эти компоненты совершенствовались, их набор расширялся, так что в Delphi 6 на вкладке QReport размещено более 20 компонентов, с помощью которых программист может сравнительно легко создавать достаточно сложные отчеты.
2.1. Принципы построения отчета
Центральным компонентом при построении отчета является компонент TQuick-Rep, определяющий свойства отчета в целом. Этот компонент всегда помещается на отдельную пустую форму, создавая с ее помощью визуальную среду конструирования отчета (рис. 1).
Рис. 1. Пример формы с размещенным на ней компонентом TQuickRep
Пустое внутреннее пространство компонента имитирует чистый лист бумаги (его поля очерчены пунктирными линиями). На это пространство помещаются остальные компоненты точно так, как если бы создавалась обычная форма, однако в отличие от обычной формы форма с компонентом TQuickRep, подобно модулю данных, никогда не визуализируется в работающей программе.
Отчет в основном строится из компонентов-полос TQRBand, с помощью которых формируются различные его фрагменты, такие как общий заголовок, заголовок каждой страницы, заголовки колонок отчета, область для отображения собственно данных из ТБД и т. п. Содержимое полосы зависит от следующего ее свойства:
type TQRBandType
(rbTitle, rbPageHeader, rbDetail, rbPageFooter, rbSummary, rbGroupHeader, rbGroupFooter. rbSubDetail. rbColumnHeader, rbOverlay, rbChild);
property BandType : TQRBandType:
Свойство может содержать одно из следующих значений, определяющих, что будет отображать полоса:
На полосах TQRBand или полосах дочерних компонентов TQRStringsBand, TQRSub-Detail, TQRChildBand и др. размещаются остальные компоненты отчета, которые делятся на оформительские и отображающие данные. Оформительские компоненты содержат различного рода вспомогательную информацию — надписи, изображения и т. д. Эта информация не является частью данных из БД, но служит для удобства чтения отчета. Компоненты отображения данных получают информацию из соответствующих полей НД или вычисляют ее на основе этой информации.
По структуре различают три рода отчетов: простые, типа главный-детальный, и композитные. В простых отчетах отображаются данные из одного НД, например список всех накладных, связанных с отпуском книг конкретному покупателю, упорядоченный по дате или сумме. В простом отчете должна использоваться хотя бы одна полоса TQRBand типа rbDetail, которая при печати (просмотре) отчета будет автоматически повторяться столько раз, сколько записей содержит НД. В отчетах типа главный-детальный используется информация из двух НД, связанных соответствующим реляционным отношением. Например, такой отчет позволяет напечатать не только текущую накладную, но и связанный с ней список книг. В отчетах главный-детальный обязательно используется полоса TQRSubDetail, которая автоматически повторяется столько раз, сколько записей содержит детальный НД. Наконец, композитный отчет строится как механическое объединение двух и более других отчетов. Например, с его помощью можно создать отчет, в котором данные по конкретной накладной будут дополняться исчерпывающей информацией о партнере. Для создания композитного отчета на любую форму помещается компонент TQRCompositeReport, после чего на этапе прогона программы он наполняется с помощью метода Add и его свойства Reports, например, так:
procedure TfmPrint.FormCreate(Sender: TObject);
begin
with QrCompositeReportl do begin
Reports.Add(QuickRepl); Reports.Add(QuickRep2) end
end:
Любой отчет можно напечатать, если обратиться к его методу Print, или просмотреть в специальном окне просмотра, если вызвать метод Preview.
2.2. Пример создания отчета
В этом разделе иллюстрируются основные приемы создания отчета.
Создайте в проекте новую пустую форму, расположите на ней компонент TQuickRep, измените имя формы на fmPrint и сохраните в дисковом файле fmPrintU. Эта форма не будет создаваться автоматически в момент старта программы, поэтому после ее присоединения к проекту выберите команду Project ► Options и перенесите ее в список доступных форм Available forms (рис. 2).
Рис.2 Убираем новую форму из списка создаваемых автоматически при старте приложения
С помощью команды File ► Use unit свяжите новую форму с основной формой приложения Form1, после чего поместите в свойство DataSet компонента QuickRep значение Form1.Table3. Замечу, что это свойство всегда должно быть заполнено ссылкой на тот набор данных, который будет содержать основную информацию — иначе полосы TQRBand типа rbDetail и TQRSubDetail не смогут автоматически реплицироваться по количеству записей НД.
Поместите на отчет полосу TQRBand. Эта полоса по умолчанию имеет тип rbTitle, то есть появляется всего один раз в самом начале отчета. Используем ее для размещения заголовка отчета, для чего установите ее высоту Height = 40 и поместите на нее компонент TQRLabel со следующими свойствами:
Вид отчета к этому моменту на этапе конструирования показан на рис. 3. Чтобы увидеть отчет в окне предварительного просмотра, щелкните на компоненте QuickRep правой кнопкой мыши и выберите в контекстном меню команду Preview.
Рис. 3. Отчет на этапе конструирования
Теперь поместим в отчет заголовки его колонок. Для этого используется компонент TQRBand со свойством BandType = rbColumnHeader. Установите для этого компонента также следующие свойства: Font. Size = 10; Font. Style. fsBold = True, чтобы заголовки отображались полужирным шрифтом, а также поместите значения True в свойства Frame.DrawBottom, Frame.DrawLeft, Frame.DrawRight и Frame.Draw-Top, чтобы полоса очерчивалась прямоугольной рамкой.
Разместите на новой полосе три компонента TQRLabel со следующими свойствами (рис. 4):
компонент QRLabel2 со свойствами:
компонент 0RLabel3 со свойствами:
компонент QRLabel4 со свойствами:
Рис. 4 Отчет с заголовками колонок
Чтобы в отчете появился список курсантов с дисциплинами и оценками, поместите в него компонент TQRSubDetail с такими значениями свойств:
На полосе TQRSubDetail разместите три компонента TQRDBText для отображения содержимого трех колонок отчета:
Вид отчета показан на рис. 6.
Рис. 6. Отчет с заголовками колонок и детальной информацией
Для размещения в отчете итоговой информации используется полоса RQRBand типа rbSummary. Поместите на эту полосу:
Чтобы вызывать отчет в приложении на основную форму приложения поместите кнопку присвойте ее свойству Caption значение Отчет и организуйте вызов формы fmPrint по нажатию этой кнопки рис.7.
Рис. 7 Поместим кнопку Отчет на основную форму приложения
Листинг 1. Обработчик нажатия на кнопку Отчет
procedure TForm1.Button2Click(Sender: TObject);
begin
fmPrint := TfmPrint.Create(Self);
fmPrint.QuickRepl.Preview;
fmPrint.Free
end;
Запустите программу на выполнение и нажмите кнопку Отчет Вы должны получить результат аналогичный представленному на рис. 8
Рис. 8 Пример готового отчета
3. СОЗДАНИЕ ОТЧЕТОВ В DELPHI 7
3.1. Принципы построения отчета
Генератор отчетов Rave Reports 5.0
Генератор отчетов Rave Reports 5.0 разработан фирмой Nevrona и входит в состав Delphi 7 в качестве основного средства для создания отчетов. Он состоит из трех частей:
Отчет в приложении Delphi
Завершив обзор нового генератора отчетов, давайте обратимся к деталям программирования и посмотрим, что нужно сделать, чтобы приложение могло работать с отчетами.
Основой отчета является файл отчета с расширением rav. Он создается в визуальной среде разработки Rave Reports и может содержать произвольное число страниц. Каждая страница может быть оформлена графическими или текстовыми элементами или отображать данные из какой-либо базы данных. Другими словами, файл RAV — это проект будущего отчета, содержащий общую информацию об отчете, оформление его страниц и правила их заполнения.
После создания проект отчета необходимо связать с приложением Delphi. Для этого используется компонент TRvProject. Этот компонент обеспечивает представление отчета в приложении.
Но этого недостаточно, чтобы просмотреть или напечатать отчет. Для выполнения этих операций используется код ядра генератора отчета, который автоматически прикомпилируется к исполняемому коду приложения при переносе на любую форму проекта компонентов TRvProject и TRvSystem. Для управления операциями печати и просмотра в проекте должен присутствовать компонент TRvSystem (рис. 9).