Помощь в написании студенческих работ
Антистрессовый сервис

Введение в построение отчетов

РефератПомощь в написанииУзнать стоимостьмоей работы

Кроме методов компонент TQuickRep имеет ряд очень полезных событий: property AfterPreview: TQRAfterPreviewEvent; наступает после закрытия окна предварительного просмотра; property AfterPrint: TQRAfterPrintEvent; наступает после вывода отчета на печать; property BeforePrint: TQRBeforePrintEvent; наступает в момент генерации отчета, до выдачи окна предварительного просмотра и до вывода отчета… Читать ещё >

Введение в построение отчетов (реферат, курсовая, диплом, контрольная)

Обзор компонентов Главное назначение любой информационной системы, кроме обеспечения нормального функционирования автоматизируемых бизнесс — процессов, это получение достоверных отчетов о тех или иных параметрах бизнесс — процессов.

Delphi предоставляет набор компонентов, предназначенных для быстрого построения необходимых отчетов и вывода их на печать. Эти компоненты распологаются на вкладке QReport палитры компонентов.

Отчет сроится следующим образом. Сначала создается объект компонента TQuickRep, который инкапсулирует в себе поведение отчета. Затем на созданом отчете располагают экземпляры компонента TQRBand, которые используются для расположения на них отображаемых данных, заголовков, титульной и конечной информации. На отчете располагают столько таких компонентов, сколько секций отчета должно быть отображено, например: общий заголовок отчета, заголовок каждой страницы, область отображения записей отчета, область конечной информации отчета и т. д.

На каждом экземпляре компонента TQRBand располагают компоненты визуализации данных отчета, которые, собюственно, и отображают данные для отчета.

В качестве примера построения отчета рассмотрим отчет по трафику.

В этом отчете будет выводиться информация, которая получается при выборе пункта меню «Отчеты» «Отчет по трафику» нашего приложения.

Копирование данных: компонент TBatchMove.

Начнем мы построение отчета с переноса информации из запроса (компонент qrTrafficRep) в фиксированную таблицу БД, которую назовем TrafficRep.db. Данной таблице соответствует экземпляр компонента TTable — tbTrafficRep.

Такой перенос информации позволяет просто и удобно делать компонент TBatchMove, располеженный на вкладке Data Access палитры компонентов. Чтобы осуществить перенос данных, расположим в модуле данных dmMain, экземпляр компонента TBatchMove — bmMain. Свойству Source данного компонента присвоим ссылку на наш запрос qrTrafficRep, а свойству Destination — ссылку на новую таблицу tbTrafficRep. Кроме того, необходимо правильно установить свойство Mode, которое определяет режим переноса информации. Мы это свойство установим в значение batCopy, которое определяет режим удаления предыдущих записей таблицы tbTrafficRep и занесения в пустую таблицу новых записей из qrTrafficRep.

Теперь, если вызвать метод bmMain. Execute, произойдет перенос данных из запроса в таблицу.

TQuickRep.

Основным компонентом для построения отчета является TQuickRep, который определяет поведением отчета в целом. Для создания этого компонента в проекте необходимо выбрать пункт меню «File» «New» и в появившемся диалоге выбрать элемент «Report». При этом будет создана форма, на которой будет располагаться компонент TQuickRep. Установим свойство Name в значение rpTrafficRep, а свойству DataSet присвоим ссылку на таблицу tbTrafficRep, из которой будет выбираться информация для отображения в отчете.

Для настройки отчета необходимо дважды щелкнуть на отчете левой кнопкой мышки. При этом на экране отобразится диалог, позволяющий настроить отчет. Для нашего отчета мы настроим количество и состав компонентов TQRBand. В нашем отчете будут использоваться следующие секции: заголовок страницы (Page header), заголовок всего отчета (Title), непосредственно выводимые записи (Detail band) и конечная информация отчета (Summary). Кроме того, установим, что не надо выводить заголовок страницы на первой странице отчета.

После нажатия на кнопку «ОК» диалога, на отчете появятся экземпляры компонента TQRBand, соответствующие выбранным секциям отчета.

Рассмотрим наиболее полезные методы TQuickRep. Их два.

Первый — procedure Preview — предназначен для вывода отчета в окне предварительного просмотра. Чтобы просмотреть в окне предварительно просмотра содержимое отчета в том виде, как он будет выводиться на печать, необходимо нажать правой кнопкой мышки на отчете и выбрать пункт «Preview» появившегося меню.

Второй — procedure Print — предназначен для вывода отчета на печать.

Кроме методов компонент TQuickRep имеет ряд очень полезных событий: property AfterPreview: TQRAfterPreviewEvent; наступает после закрытия окна предварительного просмотра; property AfterPrint: TQRAfterPrintEvent; наступает после вывода отчета на печать; property BeforePrint: TQRBeforePrintEvent; наступает в момент генерации отчета, до выдачи окна предварительного просмотра и до вывода отчета на печать.

TQRBand.

После настройки вида отчета мы получили 4 экземпляра компонента TQRBand.

Компоненты TQRBand являются основными составными частями отчета и используются для размещения в них статического текста, рисунков и данных. Местоположения компонента в отчете и его поведение определяются свойством property BandType: TQRBandType. Это свойство может принимать следующие значения:

rbTitle — определяет компонент заголовка отчета. Этот вид компонента TQRBand используется для вывода заголовочной части отчета. В нашем отчете в этом компоненте будет располагаться название отчета, дата его формирования и заголовки столбцов.

rbPageHeader — определяет компонент заголовка страницы. Информация, находящаяся в секции, определяемой этим компонентом, выводится всякий раз при печати новой страницы и размещается выше всех других секций, даже выше секции заголовка отчета. В данной секции мы будем выводить номер текущей страницы и заголовки столбцов. Т. к. эта секция выводится даже выше заголовка отчета приходится не выводить ее на первой странице, чтобы не было неприятного визуального эффекта.

rbDetail — компонент детальной информации. Выводится всякий раз при переходе на новую запись в НД отчета. Отчет печатается для всех записей НД, который указан в свойстве DataSet отчета.

rbPageFooter — компонент конечной информации страницы. Выводится для каждой страницы после все иных данных на странице. Эту секцию мы не будем использовать.

rbSummary — компонент конечной информации отчета. Выводится на последней странице отчета, но перед конечной информацией данной страницы. В данной секции мы расположим простую линию, которая будет служить нижней границей отчета.

TQRLabel.

Данный компонент позволяет выводить статический текст. В нашем отчете экземпляры этого компонента используются для отображения заголовков столбцов и заголовка всего отчета.

TQRDBText.

Данный компонент используется в секции детальных данных для отображения значений полей текущей записи набора данных. В нашем отчете экземпляры данного компонента будут отображать поля таблицы tbTrafficRep.

TQRExp.

Данный компонент позволяет вычислять выражения в отчете и отображать их результат. Выражения могут формироваться только на основе значений полей НД отчета.

TQRSysData.

В отчете иногда требуется отображать информацию о номере страницы или текущей дате. Для этих целей служит данный компонент. Свойство, отвечающее за тип отображаемой информации, называется Data. Для отображения номера страницы присвоим значение свойству Data — qrsPageNumber, а для отображения текущей даты — qrsDateTime.

TQRImage.

Этот компонент применяется для вывода различных графических изображений из файлов.

TQRShape.

Для построения линий, которые разделяют столбцы заголовков страниц используется данный компонент.

Построение простейшего отчета «Отчет по трафику».

Для генерации отчета в нашем приложении необходимо выбрать пункт меню «Действия» «Печать». Код обработчика приведен ниже:

procedure TfmTrafficRep. Print;

begin.

//—-перекачивание данных запроса в таблицу.

dmMain.bmMain.Execute;

dmMain.tbTrafficRep.Active:=True;

//—-отчет.

rpTrafficRep:=TrpTrafficRep.Create (fmTrafficRep);

if lPhoneNum then begin.

rpTrafficRep.lbPhoneNum1.Caption:='Телефон';

rpTrafficRep.lbPhoneNum2.Caption:='Телефон';

rpTrafficRep.edPhoneNum.DataSet:=dmMain.tbTrafficRep;

rpTrafficRep.edPhoneNum.DataField:='Телефон';

end;

rpTrafficRep.Preview;

//—-завершающие операции.

rpTrafficRep.Free;

rpTrafficRep:=nil;

dmMain.tbTrafficRep.Active:=False;

end;

Первым делом вызывается метод компонента TBatchMove Execute, который позволяет скопировать данные из запроса qrTrafficRep в таблицу TrafficRep.db. После этого создается отчет и настраиваются его столбцы с учетом используется ли № телефона в отчете.

После настройки вида отчета он выводится в окно предварительного просмотра откуда пользователь может его распечатать на принтере.

Последнее, что мы сделаем, это выделим цветом те записи отчета, у которых продолжительность разговора больше 150 секунд. Для этого мы воспользуемся событием BeforePrint секции детальных данных. Код обработчика приведен ниже:

procedure TrpTrafficRep. DetailBand1BeforePrint (Sender:

TQRCustomBand;

var PrintBand: Boolean);

begin.

if DataSet. FieldByName ('Длительность').AsInteger>150 then DetailBand1. Color:=clSilver.

else DetailBand1. Color:=clWhite;

end;

В обработчике события проверяется значение поля длительности текущей записи НД, и, если длительность больше 150 секунд, то текущая запись отображается с серым цветом фона и белым цветом в противном случае.

Лабораторная работа Используя полученные знания, построить отчеты, указанные в вариантах заданий.

Показать весь текст
Заполнить форму текущей работой