{ Обновление данных на сервере }
ADODataSetl.UpdateBatch; end;
procedure TForml.FormlCreate(Sender: TObject);
begin
ADOConnectionl.ConnectionString:= 'FILE NAME=' + DataLinkDir + '\DBDEMOS.UDL';
ADODataSetl.Open;
end;
procedure TForml.UpdateButtonClick(Sender: TObject); begin
UpdateData; end;
procedure TForml.FormlCloseQuery(Sender: TObject; var CanClose: Boolean); begin
if ADODataSetl.Active then try
{ Обновление данных на сервере при закрытии формы } UpdateData except
on E: Exception do begin
Application.HandleException(Self);
CanClose:= MessageDlg('Данные не сохранены/обновлены, выйти?', mtConfirmation, mbYesNoCancel, 0) = mrYes; end; end; end;
procedure TForml.GetTableButtonClick(Sender: TObject); begin
{ Повторное открытие табличного набора данных 'Country'}
ADODataSetl.Close;
ADODataSetl.CommandType:= cmdTable;
ADODataSetl.CommandText := 'Country';
300
Часть II. Технологии доступа к данным
ADODataSetl.Open; end;
procedure TForml.ButtonlClick(Sender: TObject); begin
ADODataSetl.Close;
ADODataSetl.CommandType: = cmdTable; ADODataSetl.CommandText: = Edit1.Text; try
ADODataSetl.Open; except
on E: Exception do begin
MessageDlg('Исправьте имя таблицы', mtError,[mbOK],0); ADODataSetl.Close; end; end; end; end.
Первоначально при запуске приложения автоматически открывается таблица с именем 'Country'. При необходимости открыть другую таблицу для просмотра и редактирования ее имя следует ввести в однострочном редакторе (компонент Editi) и затем нажать кнопку с заголовком Открыть таблицу с именем.
Обновление внесенных в открытую таблицу изменений происходит при нажатии на кнопку с заголовком Сохранить на сервере или автоматически при закрытии формы приложения.
Глава 11
Создание и просмотр отчетов с помощью Rave Reports
Отчет представляет собой печатный документ, содержащий данные, аналогичные получаемым в результате выполнения запроса к БД или из некоторого другого источника — электронной таблицы, сообщения электронной почты, текстового документа и др. Можно выделить следующие виды отчетов:
□ простой отчет;
□ отчет с группированием данных;
□ отчет для таблиц, связанных отношением "главный-подчиненный";
□ составной отчет, объединяющий несколько разных отчетов.
Характеристика генератора отчетов
В Delphi 7 для создания отчетов предназначен генератор отчетов Rave Reports 5.0 фирмы Nevrona, компоненты которого, предназначенные для управления отчетами, размещены на странице Rave Палитры компонентов. Назначение компонентов указано в главе 2. Генератор отчетов имеет развитые средства визуального проектирования отчетов.
Из состава Палитры компонентов изъята страница QReport, содержащая набор компонентов, предназначенных для создания отчетов. Как отмечалось, для обеспечения обратной совместимости компоненты страницы QReport размещены в пакете dclqrt70.bpl в папке \Delphi 7\Bin и могут быть установлены в Палитру компонентов.
Генератор отчетов Rave Reports позволяет создавать отчеты для обычных приложений и для приложений баз данных. При этом обеспечивается возможность создания отчетов для приложений баз данных, использующих различные механизмы доступа к данным BDE, ADO и dbExpress.
Компоненты, расположенные на странице Rave Палитры компонентов, предназначены для управления отчетами в приложении. Важнейшими из них являются компоненты RvProject и RvSystem. Так, компонент RvProject типа TRvProject задает представление проекта отчета в приложении Delphi, а ком-
302
Часть II. Технологии доступа к данным
понент RvSystem служит для управления отчетом и, к примеру, позволяет задать печать, предварительный просмотр или передачу отчета в файл.
Отчет размещается в файле с расширением rav, который представляет проект создаваемого отчета и содержит информацию об отчете, параметры оформления страниц отчета и др. В состав проекта отчета может входить один или несколько отчетов, в каждом из которых может быть произвольное число страниц и глобальных страниц. На страницах отчета и на глобальных страницах могут размещаться графические и текстовые объекты, связанные с источниками данных приложения Delphi.
Визуальный конструктор отчетов Rave Reports 5.0 повышает удобство и упрощает непосредственную разработку отчетов. Вызвать визуальный конструктор отчетов можно тремя путями: с помощью команды Tools\Rave Designer меню Delphi, двойным щелчком мыши на компоненте RvProject или с помощью команды Rave Visual Designer контекстного меню компонента Rv Project.
Кроме того, в состав генератора отчетов входит ядро, которое обеспечивает управление отчетом, предварительный просмотр и отправку на печать. Код ядра при компиляции помещается в приложение, тем самым обеспечивается автономность последнего.
Визуальное конструирование отчетов
Визуальный конструктор отчетов Rave Reports 5.0 служит для повышения удобства и упрощения непосредственной разработки отчетов. С его помощью можно быстро создать новый отчет, глобальную страницу, страницу отчета, настроить параметры отчета, выполнить подключение источника данных и др.
Интерфейс визуального конструктора
Вызов визуального конструктора отчетов можно выполнить с помощью команды Tools\Rave Designer меню Delphi, двойным щелчком мыши на компоненте RvProject или с помощью команды Rave Visual Designer контекстного меню компонента RvProject. Возможный вид окна Rave Reports 5.0 приведен на рис. 11.1.
Визуальный конструктор отчетов имеет практически стандартный интерфейс приложений Windows. В верхней части окна визуального конструктора расположено меню. Под ним находится панель инструментов, кнопки которой дублируют основные команды визуального конструктора. В правой верхней части конструктора размещена многостраничная панель инструментов, на вкладках которой содержатся компоненты, используемые при создании отчетов, а также элементы, управляющие параметрами объектов отчета (цвет линий, шрифт, выравнивание) и масштабом отображения отчета в окне.
Инспектор компонентов отчета, расположенный в левой части окна визуального конструктора, позволяет выполнить настройку свойств компонентов отчета, которые выбираются в дереве проекта отчета. В нижней части Инспектора компонентов отчета может отображаться подсказка для выбранного свойства. Управление
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
303
отображением этой подсказки и подсветкой измененных свойств компонентов выполняется с помощью контекстного меню Инспектора компонентов отчета.
В центральной части окна визуального конструктора расположен блокнот с двумя вкладками: Page Designer (Конструктор страниц) и Event Editor (Редактор событий). С помощью вкладки Page Designer можно добавлять, удалять и настраивать компоненты на отдельных страницах отчета. На этой вкладке имеется еще один блокнот, каждая из вкладок которого содержит одну страницу отчета. С помощью вкладки Event Editor создаются обработчики событий для отчетов, страниц, элементов оформления и компонентов отчета.
Дерево проекта отчета, размещенное в правой части окна визуального конструктора, отображает состав компонентов открытого проекта отчета. С помощью двойного щелчка удобно выбирать компоненты проекта отчета для отображения в центральной части окна и настройки свойств в Инспекторе компонентов.
Состав проекта отчетов
В дереве проекта отчетов RaveProject (см. рис. 11.1) имеются следующие три составляющие:
□ Report Library (Библиотека отчетов проекта) — содержит все отчеты проекта;
304
Часть II. Технологии доступа к данным
П Global Page Catalog (Каталог глобальных страниц) — содержит перечень страниц, являющихся общими для всего проекта;
□ Data View Dictionary (Словарь просмотров данных) — содержит объекты соединения с данными из внешних источников.
Рассмотрим более подробно каждую из названных составляющих проекта отчетов.
Библиотека отчетов проекта содержит все отчеты, входящие в состав проекта. Отдельный отчет в составе проекта включает произвольное число страниц, содержащих компоненты с данными, текстом и графикой, а также компоненты, повышающие наглядность оформления отчета.
При работе с проектом отчетов выделяют текущий отчет. При открытии проекта отчетов текущим становится первый отчет в составе проекта отчетов. При необходимости двойным щелчком мыши в дереве проекта отчетов можно установить текущим произвольный отчет. При выходе из среды визуального конструктора текущий отчет в составе проекта сохраняется и может использоваться при работе с отчетом с помощью компонента RvProject в приложении Delphi.
К проекту отчета можно добавлять новые отчеты с помощью команды File\New Report визуального конструктора. К текущему отчету можно добавлять страницы с помощью команды File\New Report Page. Для удаления отчета, страницы отчета или глобальной страницы достаточно выделить отчет или страницу отчета в дереве проекта отчетов и нажать клавишу <Delete>.
В отчет может входить произвольное число страниц. Перед предварительным просмотром и печатью отчета можно выбрать произвольное подмножество страниц отчета и добавить нужные страницы из каталога глобальных страниц. В отчете для управления составом и очередностью печати страниц предназначено свойство PageList. Если значение этого свойства не определено, то печатаются все страницы отчета в порядке их следования в дереве проектов отчета. Для задания значения свойства PageList используется редактор списка страниц Page List Editor (рис. 11.2), позволяющий сформировать список страниц для печати.
В проекте отчетов RaveDemo.rav, расположенном в папке \Borland\Delphi7\ Rave\Demos, имеется библиотека, содержащая множество различных отчетов. Например, в ее составе имеются такие отчеты, как MultiPageReport (многостраничный отчет), BarCodes (штрихкоды), MasterDetailReport (отчет "мастер-детальный"). При необходимости полезно использовать отчеты из этой библиотеки в качестве шаблона при создании аналогичных отчетов.
Каталог глобальных страниц содержит страницы, которые являются доступными в любом отчете из состава библиотеки отчетов открытого проекта. Это позволяет получить стандартное оформление для ряда страниц отчета, таких как титульный лист, рамка для дипломных проектов и отчетов о НИР и т. п.
Напомним, что имеющуюся в каталоге глобальную страницу можно добавить в список страниц отчета для печати с помощью редактора списка страниц (см. рис. 11.2).
Для открытого проекта отчетов в состав каталога пустую глобальную страницу можно добавить, выполнив команду File\New Global Page. После этого глобальную страницу можно редактировать и добавлять в состав страниц любого из отчетов.
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
305
Рис. 11.2. Окно редактора Page List Editor
Словарь просмотров данных содержит объекты доступа к данным из внешних источников. Создание новых объектов выполняется с после задания команды File\New Data Object. При этом открывается диалоговое окно Data Connections (рис. 11.3), в котором для выбора предлагаются следующие типы объектов:
□ Data Lookup Security Controller (Контроллер безопасности поиска данных) — обеспечивает аутентификацию пользователей по имени и паролю;
□ Database Connection (Соединение с базой данных) — устанавливает соединение с внешним источником данных для требуемой технологии доступа (ADO, BDE, dbExpress);
306
Часть II. Технологии доступа к данным
П Direct Data View (Прямой просмотр данных) — создает просмотр данных для активного соединения с источником данных;
□ Driver Data View (Просмотр данных с помощью драйвера) — создает просмотр данных на основе уже имеющегося в словаре соединения;
□ Simple Security Controller (Простой контроллер безопасности) — задает список пользователей для возможной организации доступа в отчетах.
Объекты в составе словаря просмотров данных доступны для всех отчетов, входящих в состав проекта отчетов. Названные типы объектов используются преимущественно при создании отчетов для приложений баз данных.
Редактор событий
В проекте любому отчету, странице, элементу оформления или компоненту отчета можно назначить один или несколько обработчиков событий. Сделать это можно с помощью редактора событий, расположенного на вкладке Event Editor (рис. 11.4) блокнота в центральной части окна визуального конструктора.
Создание обработчика событий выполняется следующим образом. В дереве проекта отчетов выбирается текущим отчет, страница или компонент, для которого требуется создать обработчик. Далее в списке Available Events выбирается одно из доступных для обработки событий. Это событие оказывается в списке Defined Events (Определенные события) и автоматически создается обработчик этого события. Теперь для этого события следует задать собственно код обработки события в нижней части окна ректора событий и нажать кнопку Compile. При этом происходит компиляция кода обработчика с выдачей сообщения о завершении компиляции или с сообщением об ошибке. При необходимости можно выбрать другое событие в списке Available Events и назначить ему свой обработчик.
При написании кода обработки событий используется синтасис, близкий к синтаксису языка Object Pascal, допускается применение некоторых методов Delphi.
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
307
К примеру, на рис. 11.4 приведен код обработчика события OnBeforeReport, с помощью которого свойству Matchside компонента Bitmapl присваивается
значение msinside.
Компоненты, представленные