Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БДЗиЭС / Базы данных, знаний и экспертные системы. Часть 2 (лб).pdf
Скачиваний:
59
Добавлен:
11.05.2015
Размер:
336.26 Кб
Скачать

12

Создание отчетов

Для создания отчета используется компонент TQuickRep, на котором с помощью компонентов TQRBand, TQRSubDetail, TQRGroup задаются области отчета, на которых размещаются компоненты TQRLabel, TQRDBText,TQRExpr, TQRSysData и другие, которые отображают информацию в отчете. Далее будут перечислены компоненты и их назначение, для более подробной информации обращайтесь к литературе по Delphi и встроенной помощи Delphi.

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

TQRSubDetail — область отчета, в которой располагаются данные подчиненной таблицы при реализации в отчете связи Master-Detail.

TQRGroup — применяется для группировки данных в отчете согласно значению выражения, которое задается в свойстве Expression данного компонента

TQRLabel — позволяет разместить в отчете статический текст, надписи

ит.д.

TQRDBText — позволяет разместить в отчете содержимое полей наборов данных.

TQRExpr — позволяет разместить в отчете значения. являющиеся результатом вычисления выражений. Алгоритм вычисления выражений строится с помощью редактора формул этого компонента.

TQRMemo — для вывода значений полей комментариев

TQRRichText — вывод полей RTF

TQRShape — вывод графических фигур, например рамок, линий

TQRImage — вывод графической информации из баз данных

TQRChart — вывод в отчет графиков, построенных, например, по информации, содержащейся в базе данных.

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

Простой отчет должен демонстрировать применение основных компонентов типа TQRLabel. TQRShape, TQRDBText. Сложный отчет должен включать в себя использование колонтитулов, выборку данных из нескольких таблиц, группировку данных, подсчет агрегатной информации.

ЛАБОРАТОРНАЯ РАБОТА №8

СОЗДАНИЕ CGI-ПРИЛОЖЕНИЯ ДЛЯ РАБОТЫ С БАЗОЙ ДАННЫХ

Задание к работе

13

1.Изучить стандартный пример создания Web-приложения, поставляемый с Delphi 3.

2.Создать и отладить свое собственное Web-приложение, организовать его взаимодействие с базой данных под управлением InterBase, созданной в лабораторной работе №1.

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

Краткие теоретические сведения

В этой лабораторной рассматривается использование Delphi для разработки приложений, которые используются на Web-сервере. Такие приложения позволяют расширять функциональные возможности сервера, при этом все насущные требования конкретных систем выполняются без модификации самого сервера. Разработка программ, которые выполняются на Web-сервере строится по классической схеме клиент/сервер. Web-сервер получает от клиента информационное сообщение (для этого, как правило, используется один из атрибутов POST или GET элемента FORM языка HTML) Потом это сообщение передается Web-приложению, которому оно адресовано. Приложение на основе этой информации создает HTML-документ и возвращает его Web-серверу. Сервер передает документ клиенту. В данной лабораторной работе информационный обмен между сервером, клиентом и приложением производится с помощью стандартного протокола Common Gateway Interface (CGI).

Web-приложение, получив сообщение от сервера, создает объект Webзапрос (объект класса TWebRequest). В нем упакована информация, которая была получена сервером от клиента с помощью HTTP. Из свойств и методов этого объекта можно получить необходимые фрагменты информационного сообщения. Запрос передается объекту типа TWebDispatcher, который вызывает один из встроенных в него действий TWebActionItem. Эти действия являются указателями на обработчики сообщений. Потом специальные компоненты-

редакторы (TPageProducer, TDataSetProducer, TQueryTableProducer) создают сообщения на языке HTML, в результате чего происходит посылка ответа серверу, а от него — клиенту.

Для создания нашей программы воспользуемся мастером. Выбираем File | New | Web Server Application | CGI Standalone executable. В результате этого получаем модуль класса TWebModule, который является Web-диспетчером. Это невидимый объект. Использовать объекты класса TForm в приложении нельзя, потому что это приведет к ошибке времени выполнения.

Для создания статически компонентов HTML-страницы используется компонент TPageProducer Текст документа может находиться или в свойстве HTMLDoc или содержаться в файле, имя которого указывается в свойстве HTMLFile. Можно использовать только одно из этих свойств.

14

Action Editor компонента WebModule появляется при нажатии правой кнопки мыши на компоненте WebModule. У каждого компонента ActionItem есть всего лишь одно событие OnAction, которое запускается при передаче диспетчером управления на этот обработчик. Замещая его мы можем добиться разной реакции на разные действия.

Диспетчеризация событий сервером производится с использованием свойства PathInfo объекта ActionItem. Для того, чтобы разобраться, что это за свойство, необходимо вспомнить структуру URL.

протокол://компьютер/приложение/PathInfo?запрос

Таким образом, PathInfo фактически содержит идентификатор, по виду напоминающий каталог на сервере. Задавая в ссылках HTML-документов разные каталоги на сервере мы можем вызывать активацию разных компонентов ActionItem.

Кроме вышеперечисленных свойств, у компонента TWebRequest есть еще ряд свойств, которые могут оказаться полезными:

URL — содержит URL данного запроса

Host — содержит имя компьютера

ScriptName — полный путь к приложению, которое будет выполняться на сервере

Query — содержит запрос

QueryFields — содержит предыдущий запрос в виде имя=значение

From — содержит E-Mail адрес Web-клиента

Refer — содержит URL отправителя запроса

RemoteHost — содержит URL клиента, пославшего запрос

RemoteAddr — содержит IP-адрес клиента

UserAgent — вид браузера, пославшего запрос

Content — содержит информационный запрос

ContentFields — содержит предыдущий запрос в виде имя=значение

ContentType — определяет виз предыдущих свойств в соответствии со спецификацией MIME

ContentEncoding — содержит механизм декодирования сообщения

ContentLength — содержит размерность свойства Content в байтах.

Для отображения на Web-странице содержимого баз данных используются следующие компоненты: TPageProducer, TDataSetTableProducer, TQueryTableProducer.

Компонент TPageProducer достаточно прост, и кратко был охарактеризован ранее.

Компонент TDataSetTableProducer позволяет не только подключиться к выбранному источнику данных (наподобие TDataSource), но и визуально провести настройку формата выводимой информации.

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

15

разделом Response Editor, который доступен по нажатию правой кнопки мыши на компоненте TDataSetTableProducer. В появившемся редакторе с помощью кнопок Add и Delete можно добавлять и удалять поля, которые будут отображаться на HTML-странице. Кнопки MoveUp и MoveDown позволяют изменить порядок следования полей в таблице, остальные же свойства практически полностью совпадают с тегами языка HTML для описания таблиц:

Align — задает выравнивание текста таблицы

Border — задает толщину отображаемой рамки. -1 соответствует ее отсутствию

BgColor — цвет фона таблицы

CellPadding — расстояние в пикселах между текстом и рамкой

CellSpacing — ширина внутренней рамки в пикселах

Width — ширина таблицы в процентах от ширины всей Web-страницы Кроме этого, при выборе любого поля таблицы в инспекторе объектов

можно настроить для него свои свойства отображения:

Align — горизонтальное выравнивание текста в ячейке таблицы

BgColor — цвет фона столбца. Если не задан, используется цвет фона таблицы

Custom — позволяет добавить новые атрибуты

FieldName — имя поля в источнике данных

Valign — задает вертикальное выравнивание текста в ячейке таблицы

Title — позволяет индивидуально настроить параметры первой строки столбца таблицы

Для того, чтобы получить HTML-документ, в котором отображена соответствующая таблица, нужно воспользоваться методом Content компонента TDataSetTableProducer. Он возвращает HTML-код таблицы. Чтобы осуществить дополнительную обработку содержимого получаемого HTML-кода можно использоваться тремя событиями, которые возникают в процессе создания таблицы:

OnCreateContent — возникает перед началом создания таблицы

OnGetTableCaption — возникает при формировании заголовка таблицы

OnFormatCell — возникает при формировании каждой ячейки таблицы Первое событие может быть использовано для того, чтобы перед

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

tbFish.First

Второе событие позволяет произвести некоторые действия над заголовком таблицы.

Третье событие оказывается наиболее полезным, поскольку с помощью него можно из статической таблицы превратить ее в таблицу со ссылками на другие таблицы. Свойство CellData содержит данные, помещаемые в ячейку.