Укажем назначение вкладок многостраничной панели инструментов, расположенной в верхней правой части окна визуального конструктора отчетов. Компоненты, используемые при создании отчетов, расположены на следующих вкладках:
□ Drawing — графические компоненты, повышающие наглядность оформления отчета;
□ Ваг Code — компоненты, задающие различные варианты штрихкода;
□ Standard — компоненты, задающие отображение текста и графики;
□ Report — компоненты, предназначенные для отображения данных из внешних источников.
Элементы, управляющие параметрами объектов отчета (цвет линий, шрифт, выравнивание) и масштабом отображения отчета, расположены на следующих вкладках:
□ Zoom — компоненты, управляющие масштабом отображения текущей страницы;
□ Colors — компоненты, задающие цвета для графических компонентов и страниц;
□ Lines — компоненты, задающие стиль и толщину линий графических компонентов;
□ Fills — компоненты, задающие заливку графических компонентов;
□ Fonts — компоненты, задающие параметры шрифта для текста;
□ Alignment — компоненты, задающие выравнивание графических компонентов на странице.
Добавление компонентов в отчет выполняется традиционным для систем визуального программирования способом: щелчком мыши требуемый компонент выбирается на палитре и повторным щелчком мыши размещается в нужном месте страницы отчета. Дадим краткую характеристику компонентам, расположенным на различных страницах панели инструментов.
Страница Drawing многостраничной панели инструментов содержит компоненты, обеспечивающие создание графических объектов.
Компоненты Line, mine и viine служат для рисования универсальной, горизонтальной и вертикальной линий соответственно. Все они имеют набор свойств, определяющих длину и местоположение на странице отрезка линии. Для компонента Line отрезок можно развернуть произвольным образом визуально (с помощью мыши). Для двух других компонентов поворот отрезка также возможен, но не визуально, а только путем изменения свойств компонентов.
308
Часть II. Технологии доступа к данным
Компоненты Rectangle и Square служат для рисования прямоугольника и квадрата, а компоненты Ellipse и circle — для рисования эллипса и круга соответственно. Эти четыре компонента также имеют набор свойств, определяющих их размеры и местоположение на странице.
Страница Ваг Code многостраничной панели инструментов содержит компоненты, задающие штрихкоды, которые реализуют различные стандарты.
Компонент PostNetBarCocle соответствует коду PostNet почтовой службы США, задающему код адреса.
Компонент i2of 5BarCode соответствует перемежающемуся коду I2of5 и служит для задания числовых последовательностей, в которых цифры поочередно кодируются штрихами и пробелами.
Компонент Code3 9BarCocle соответствует коду Code39 и служит для кодирования цифр, заглавных латинских букв и ряда символов с помощью штрихов и пробелов.
Компонент Coclel2 8BarCocle соответствует коду Codel28 и служит для представления первых 128 символов кода ASCII.
Компонент UPCBarCode соответствует коду UPC (Universal Product Code) и служит для маркировки продуктов, может включать до 12 цифр.
Компонент EANBarCode соответствует коду EAN (European Article Numbering system), аналогичен коду UPC, может включать до 13 цифр.
Для всех компонентов кодируемое значение задается свойством text. Оно может быть также загружено из базы данных с помощью свойств FileLink и DataLink.
С помощью свойства BarCodeRotation штрихкод можно поворачивать с дискретностью 90°.
Страница Standard многостраничной панели инструментов содержит компоненты, задающие отображение текста и графики.
Компонент text служит для отображения однострочного текста. Сам отображаемый текст задается с путем редактирования в Инспекторе компонентов отчета значения свойства text этого компонента. Непосредственно на странице отчета отображаемый текст редактировать нельзя.
Компонент memo служит для отображения многострочного текста. Отображаемый компонентом текст определяется свойством text, которое в Инспекторе компонентов отчета визуального конструктора связано с многострочным текстовым редактором Memo Editor.
Остальные свойства компонентов text и memo позволяют настроить цвет, шрифт, выравнивание местоположения текста и др.
Компонент section (секция) является невизуальным и предназначен для объединения в одну группу нескольких компонентов, к примеру, строк текста и изображений внутри заголовка отчета. Все размещенные внутри секции компонен-
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
309
ты можно по отдельности перемещать в пределах секции, а при перемещении секции по странице вместе с секцией перемещаются и они. Выравнивание компонентов внутри секции осуществляется относительно ее границ.
Компонент Bitmap служит для отображения растровых изображений, хранящихся в файлах формата BMP. Отображаемый компонентом рисунок определяется с помощью свойства image, которое в Инспекторе компонентов отчета визуального конструктора связано с диалогом загрузки файла изображения.
Компонент MetaFile служит для отображения изображений, хранящихся в файлах форматов EMF и WMF. Отображаемое компонентом изображение определяется с помощью свойства image, которое в Инспекторе компонентов отчета визуального конструктора также связано с диалогом загрузки файла изображения. При этом файлы формата WMF таким способом загрузить нельзя, для этой цели нужно использовать свойство FileLink или DataField.
Изображения, отображаемые с помощью компонентов Bitmap и MetaFile, можно масштабировать. При этом учитывается свойство Matchside. При значениях этого свойства msHeight или mswidth (по умолчанию) высота или ширина изображения соответственно устанавливаются равными высоте (свойство Height) или ширине (свойство width) исходной области, выделенной под изображение, а ширина или высота изображения соответственно устанавливаются с сохранением пропорций изображения. Если свойство Matchside имеет значение msBoth, то ширина и высота изображения устанавливаются равными ширине и высоте выделенной области, при этом пропорции изображения могут быть нарушены. При значении msinside этого свойства изображение помещается внутри выделенной области с сохранением пропорций.
Компонент FontMaster является невизуальным и предназначен для задания единых параметров шрифта для группы компонентов отчета. С его свойством Font в Инспекторе компонентов отчета связано диалоговое окно определения параметров шрифта. Эти параметры шрифта служат для определения параметров шрифта всех компонентов отчета, в свойстве FontMirror которых указан данный компонент FontMaster.
Компонент PageNuminit является невизуальным и предназначен для задания нумерации страниц, начиная с той, где он расположен. Начальный номер при этом определяется свойством initvalue. При необходимости его значение можно загрузить из базы данных с помощью свойств initDataView и InitDataField.
Компоненты отображения данных
Страница Report многостраничной панели инструментов визуального конструктора отчетов содержит компоненты, служащие для представления данных. Их можно разделить на компоненты отображения данных из связанных с ними полей просмотра данных и компоненты управления структурой размещения данных (структурные компоненты), на которые помещаются
310
Часть II. Технологии доступа к данным
ных (структурные компоненты), на которые помещаются компоненты отображения данных.
К компонентам отображения данных относятся следующие.
□ Компонент DataText служит для представления строковых или числовых значений полей связанного с ним просмотра данных.
□ Компонент DataMemo обеспечивает представление данных формата Memo или BLOB.
□ Компонент CalcText служит для представления результатов вычисления агрегатной функции по значениям связанного поля. Выполняемая функция выбирается из списка возможных значений свойства CalcType.
□ Компонент DataMirrorSection является невизуальным и подобно своему потомку Section служит для объединения других компонентов в одну группу.
У всех указанных компонентов представления данных свойство DataView задает связь с просмотром данных, а свойство DataField задает связь с полем просмотра, данные из которого отображаются компонентом.
К структурным компонентам относятся следующие.
□ Компонент Region служит для выделения области (части страницы отчета), на которой размещаются другие компоненты отображения данных. Более того, компоненты Band и DataBand размещаются только в области, определяемой компонентом Region. Свойство Columns этого компонента определяет число колонок при печати соответствующей части отчета.
□ Компонент Band задает полосу отчета, на которой располагаются другие компоненты отчета — отображения текста и графики, штрихкоды, отображения данных. Эта полоса служит для оформления заголовков, сносок, верхних и нижних колонтитулов и других фрагментов отчета, не изменяющиеся при печати просмотра данных.
□ Компонент DataBand задает полосу отчета, представляющую модель строки просмотра данных. На ней размещают компоненты отображения данных. При печати для каждой строки просмотра данных выводится новый экземпляр полосы со всеми расположенными на ней компонентами отчета. Тем самым в отчете построчно отображается весь просмотр данных.
У компонентов Band и DataBand имеется свойство, которое определяет стиль (назначение и поведение) полосы отчета. С этим свойством в Инспекторе компонентов отчета связан редактор стиля полосы Band Style Editor. В его окне (рис. 11.5) отображается взаимосвязь полос (компонентов Band и DataBand) в общей области (определяемой компонентом Region) и настраивается стиль текущей полосы.
В левой части окна редактора Band Style Editor отображается список полос области со взаимосвязями (реляционные отношения, группировка и вложенность и т. д.). Текущая полоса выделяется полужирным начертанием с подчеркиванием.
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
311
Полосы типа Band и DataBand верхнего уровня (т. е. не являющиеся подчиненными другим полосам типа DataBand) помечаются слева цветным ромбиком. При этом подчиненные полосы отчета типов Band и DataBand определяются с помощью их свойства ControllerBand, в качестве значения которого указывается имя полосы типа DataBand, которой они подчинены. Подчиненные полосы помечаются слева треугольником, острый угол которого направлен в сторону главной полосы, а цвет совпадает с цветом ромбика главной полосы.
В правой части окна редактора Band Style Editor с помощью группы флажков Print Location задается назначение текущей полосы отчета: Body Header (В) — заголовок в начале отчета; Group Header (G) — заголовок в начале группы, определенной в просмотре с помощью выражения *5283 by; Row Header (R) — заголовок в начале каждой записи; Detail (D) — заголовок в начале подчиненного набора записей в отношении "один-ко-многим"; Row Footer (г) — окончание записи; Group Footer (g) — окончание группы записей; Body Footer (b) — окончание отчета. С помощью группы флажков Print Occurrence задается местоположение полосы в отчете: First (1) — на первой странице; New Page (Р) — на новой странице, New Column (С) — в начале каждой колонки отчета.
Компоненты DataCycle, Calc2p, CalcTotal и CalcController являются невизуальными и предоставляют ряд дополнительных возможностей по вычислению данных на основе просмотров и отображению их в отчетах.
312
Часть II. Технологии доступа к данным
Компоненты управления отчетом
Компоненты, предназначенные для управления отчетами, находятся на странице Rave Палитры компонентов главного окна Delphi. С помощью этих компонентов можно выполнить все действия по настройке параметров, установлению соединения с источником данных, предварительному просмотру и печати имеющегося отчета с использованием генератора отчетов Rave Reports. Другое дело, что ряд этих действий, например предварительный просмотр и печать отчета, удобнее выполнить с использованием визуального конструктора отчетов Rave Reports.
Ниже кратко освещены важнейшие компоненты управления отчетом, без которых практически невозможны предварительный просмотр и печать отчетов вне среды визуального конструктора отчетов.
Компонент-проект отчета
При подготовке и использовании отчета обязательным является использование компонента-проекта отчета RvProject. С помощью свойства ProjectFile типа string этого компонента в окне Инспектора компонентов отчета или программно устанавливается связь с проектом отчета (файлом проекта отчета с расширением rav). Например:
RvProjectl.ProjectFile:='С:\Program
Files\Borland\Delphi7\Rave5\ProjectSTR.rav';
Для обеспечения связи компонента RvProject с компонентом RvSystem, предназначенным для управления отчетом, служит свойство Engine типа TRpComponent. Естественно, перед заданием ссылки на компонент RvSystem последний должен быть предварительно помещен в форму приложения. Этот компонент может отсутствовать в форме приложения отчета, в этом случае при запуске отчета открывается диалоговое окно Output Options, в котором выбираются вариант дальнейших действий с отчетом (печать, просмотр или помещение в файл) и, при необходимости, формат файла.
В проекте отчета может быть несколько отчетов. Для их указания в компоненте RvProject предназначены свойства ReportName, ReportFullName И ReportDesc (соответственно задающие имя, полное имя и описание отчета), имеющие тип string и определяющие параметры текущего отчета. Для смены в проекте текущего отчета можно использовать функцию SelectReport (ReportName: String; FullName: boolean): boolean;. Если параметр FullName имеет значение True, то параметр ReportName задает полное имя отчета, в противном случае — имя отчета.
Для получения списка имен отчетов, входящих в состав проекта, служит процедура GetReportList(ReportList: TString; FullName: boolean);. При ее вызове имена отчетов помещаются в список строк ReportList. При значении True параметра FullName в названный список помещаются полные имена отчетов, в противном случае — имена отчетов.
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
313
Для выполнения текущего отчета предназначены процедуры Execute; и ExecuteReport (ReportName: string);. Во втором случае имя отчета, задаваемое параметром процедуры, должно совпадать с именем отчета, определяемого свойством ReportName рассматриваемого нами компонента.
Компонент управления отчетом
Для управления отчетом служит компонент RvSystem, который обеспечивает выбор варианта действий с отчетом (печать, просмотр или помещение в файл) и при необходимости выбор формата файла. Как отмечалось, связь этого компонента с проектом отчета реализуется с помощью ссылки из компонента RvProject через СВОЙСТВО Engine.
Компонент RvSystem в своем составе инкапсулирует объекты, которые обеспечивают вывод отчета в один из трех системных приемников: SystemPrinter (печать отчета); SystemPreview (предварительный просмотр) и SystemFiler (вывод в файл).
Перед направлением отчета одному из системных приемников компонент RvSystem открывает диалоговое окно Output Options, в котором с помощью группы зависимых переключателей Printer, Preview и File осуществляется выбор системного приемника.
Компоненты установления соединения
Для установления соединения с источниками данных служат следующие компоненты странице Rave Палитры компонентов:
□ RvCustomConnection — соединение с источниками данных, не относящихся к базам данных (текстовые файлы, электронные таблицы и др.);
□ RvDataSetConnection — соединение с наборами данных приложения баз данных;
□ RvTableConnection — соединение с компонентом типа ттаЫе, устанавливаемое при использовании механизма BDE;
□ RvQueryConnection — соединение с компонентом типа TQuery, устанавливаемое при использовании механизма BDE.
При помещении в форму проекта приложения указанные компоненты оказываются доступными для выбора при создании просмотров Direct Data View. При этом предварительно компонент должен быть связан с соответствующим набором данных.
Для важнейшего из указанных компонента RvDataSetConnection свойство DataSet указывает на имя набора данных. Имя компонента RvDataSetConnection, задаваемое с помощью его свойства Name, используется в отчете для указания имени соединения в просмотрах данных отчета. Напомним, что используемое в просмотре имя соединения можно определить с помо-
314
Часть II. Технологии доступа к данным
щью библиотеки просмотров Data View Dictionary как значение свойства ConnectionName для интересующего нас компонента DataView.
Схема управления отчетом и подсоединения данных
Мы рассмотрели назначение основных компонентов, служащих для управления отчетом и подсоединения данных к отчету. Отметим, что соединение с источниками данных в отчете можно выполнить двумя способами: с помощью драйвера Rave Reports, а также с помощью компонентов приложения доступа к данным и компонентов соединения. Для наглядности на рис. 11.6 приведена обобщенная схема управления отчетом и подсоединения данных к нему.
Для организации соединения с помощью драйвера Rave Reports прежде всего командой File\New Data Object визуального конструктора отчетов создается объект соединения — компонент Database. При этом в открывшемся диалоговом окне Data Connections (см. рис. 11.3) выбирается вариант Database Connection и в очередном диалоговом окне нужно выбрать тип соединения (ADO, BDE или DBX). Каждому типу соединения соответствует свой драйвер (файл с расширением rdv). Далее в диалоговом окне Database Connection Parameters выполняется настройка параметров соединения, состав которых соответствует выбранному типу, и создается объект-соединение (с именем по умолчанию Dadabaset-i).
Теперь для связи компонентов данных отчета с данными соединения требуется создать просмотр данных, выполняющий формирование соответствующего на-
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
315
бора данных. Для этого нужно командой File\New Data Object визуального конструктора открыть диалоговое окно Data Connections (см. рис. 11.3) и выбрать вариант Driver Data View. В очередном диалоговом окне требуется выбрать одно из имеющихся соединений проекта. При этом открывается диалоговое окно Query Advanced Designer, в котором на вкладке Layout можно указать таблицы из выбранного нами соединения и задать связи между полями таблиц. С помощью вкладки Sorting & Grouping окна (рис. 11.7) можно выбрать поля для сортировки и группирования. Кнопка Editor открывает окно редактора с текстом сформированного запроса SQL, где его можно откорректировать вручную.
После завершения настройки запроса SQL созданный нами объект-просмотр (компонент DriverDataView) появляется в словаре Data View Dictionary (с именем по умолчанию DriverDataviewt-i). Строка подготовленного таким образом запроса SQL является значением свойства Query объекта-просмотра. С его помощью можно повторно вызвать окно редактора Query Advanced Designer.
Теперь созданный нами объект-просмотр данных можно подключать к компонентам доступа к данным в отчете, таким как DataText, DataMemo и DataBand, с помощью их свойства DataView. Для таких компонентов, как DataText и DataMemo с помощью свойства DataField выбирается имя поля из таблицы объекта-просмотра.
Организация соединения с помощью компонентов приложения доступа к данным и компонентов соединения выполняется следующим образом. Для каждого соединения в приложении предварительно создается компонент набора данных, например, Table или Query, который соединяется с источником данных с помощью его свойств DatabaseName и TableName. Далее с таким компонентом набора данных устанавливается соединение с помощью соответствующего ком-
316
Часть II. Технологии доступа к данным
понента: RvCustomConnection, RvDataSetConnection, RvTableConnection, RvQueryConnection страницы Rave Палитры компонентов.
Напомним, что для компонента RvDataSetConnection свойство DataSet указывает на имя набора данных. Имя компонента RvDataSetConnection, задаваемое с помощью его свойства Name, используется в отчете для указания имени соединения в просмотрах данных отчета. Как отмечалось, используемое в просмотре имя соединения можно определить с помощью библиотеки просмотров Data View Dictionary как значение свойства connectionName для компонента DataView.
Теперь в среде визуального конструктора отчетов требуется создать объект прямого просмотра, с помощью команды File\New Data Object открыв диалоговое окно Data Connections (см. рис. 11.3) и выбрав вариант Direct Data View. Затем в очередном диалоговом окне Data Connections нужно выбрать интересующее нас соединение.
Как и при предыдущем способе организации соединения, созданный таким образом объект просмотра данных — компонент DataView — можно подключать к компонентам доступа к данным в отчете, например таким как DataText, DataMemo и DataBand.
Примеры создания и просмотра отчетов
Создание отчета включает три основных этапа:
□ создание заготовки отчета в среде визуального конструктора;
□ настройка соединения и подключение просмотра данных в случае создания отчета для приложения баз данных;
□ помещение в форму приложения и настройка компонентов RvProject и RvSystem, которые осуществляют связь приложения с заготовкой отчета и управление предварительным просмотром и печатью отчета.
Заготовку собственно отчета в среде визуального конструктора можно выполнить так:
□ путем настройки одного из уже имеющихся отчетов, например, в проекте RaveDemo.rav (находится в папке Delphi7/Rave5/Demos);
□ путем конструирования отчета для обычного приложения или для приложения баз данных в среде визуального конструктора;
□ для приложения баз данных можно создать простой табличный отчет или отчет для отношений типа "главный-подчиненный" с помощью Мастера отчетов.
В приведенном списке вариантов создания заготовки отчета второй вариант представляется наиболее трудоемким и требует хороших навыков работы с компонентами визуального конструктора.
Кроме перечисленных выше действий, при создании отчета можно также выполнять преобразование файлов отчета в различные форматы и др.
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
317
Предварительный просмотр отчета
Чтобы создать отчет путем настройки одного из уже имеющихся в проекте RaveDemo.rav (находится в папке Delphi7/Rave5/Demos) отчетов, нужно выполнить предварительный просмотр представляющего интерес отчета, а затем уже заняться его настройкой.
Рассмотрим, как выполнить предварительный просмотр отчета TwoDetails из проекта RaveDemo.rav. Для отчетов приложений баз данных, использующих просмотры данных, к которым относится отчет TwoDetails, перед просмотром и выполнением нужно настроить соединения. Вид отчета TwoDetails в окне визуального конструктора на этапе проектирования и соответствующее ему дерево отчета приведены на рис. 11.8.
Чтобы определить имена просмотров данных, используемых компонентами отображения данных отчета (DataTextl, DataText2 и DataText3), поочередно выделим эти компоненты в окне проекта отчета и с помощью Инспектора компонентов отчета выясним значение свойства DataView. В нашем случае это
просмотры С именами CustomerDV, OrdersDV И ItemsDV.
Далее нам нужно определить используемые этими просмотрами имена соединений. Для этого в словаре просмотров данных Data View Dictionary также пооче-
Часть II. Технологии доступа к данным
редно выделим просмотры с полученными именами и по значению их свойств ConnectionName выясним имена соединений. В нашем случае это значения
CustomerCXN, OrdersCXN И ItemsCXN соответственно.
Все это означает, что в приложении баз данных имеются три набора данных, с которыми мы должны установить связь с помощью трех компонентов RvDataSetConnection (размещенных на странице Rave Палитры компонентов)
С именами CustomerCXN, OrdersCXN И ItemsCXN. Для СВЯЗИ КОМПОНеНТОВ
RvDataSetConnection с наборами данных из базы данных используется свойство DataSet этих компонентов. В качестве наборов данных в нашем примере используются таблицы из базы данных dbdemos с именами orders.db, customer. db И items. db.
После настройки соединения отчета с базой данных приложения можно выполнить предварительный просмотр отчета TwoDetails в среде визуального конструктора, задав для этого команду File\Execute Report. Выберем в открывшемся диалоговом окне Output Options вариант Preview и нажмем кнопку ОК. Вид отчета TwoDetails в окне предварительного просмотра приведен на рис. 11.9.
Из вида отчета на рис. 11.9 и из значений свойства DataField компонентов отображения данных DataTextl, DataText2 и DataText3 видно, что в отчете компонент DataTextl отображает данные из трех полей orderNO, CustomNO и itemsTotai таблицы orders.db; компонент DataText2 отображает данные из полей company и CustNO таблицы customer.db; компонент DataText3 отображает данные из полей OrderNO и itemNO таблицы items.db. Кроме того, компоненты DataText4 и DataText5 соответственно отображают номер текущей страницы из общего числа страниц и дату просмотра отчета.
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
319
Полученная нами при предварительном просмотре информация, а также данные о составе компонентов и их свойствах позволяют при необходимости настроить отчет соответствующим образом. Например, можно изменить таблицы базы данных приложения, можно изменить имена отображаемых полей и т. п.
Простой отчет приложения базы данных
Простой отчет представляет собой отчет на основе данных из одного набора данных и содержит сведения, которые выводятся в табличном виде без какой-либо дополнительной обработки данных (например, группирования). Размещение и вид печатаемых в отчете данных аналогичны размещению и виду данных, отображаемых в сетке DBGrid. Отличием является то, что данные отчета не размещаются в форме, а представлены в виде бумажного документа, и их нельзя редактировать.
Рассмотрим последовательность шагов, которую требуется выполнить при добавлении простого отчета к приложению базы данных.
1. Откроем приложение базы данных Delphi, для которого требуется добавить простой отчет.
2. В форму приложения базы данных со страницы Rave Палитры поместим компонент RvDataSetConnection и с помощью Инспектора объектов присвоим свойству DataSet этого компонента значение, указывающее на имя набора данных, используемого в приложении.
3. С помощью визуального конструктора отчетов подготовим отчет и создадим файл проекта отчета. Для этого:
• с помощью команды Tools\Rave Designer меню Delphi запустим визуальный конструктор Rave Reports 5.0;
• выбором команды File\New Data Object откроем диалоговое окно Data Connections (см. рис. 11.3) и выберем в нем вариант Direct Data View;
• в очередном диалоговом окне в списке Active Data Connections выберем вариант RVDataSetConnectionl и нажмем кнопку Finish;
• в дереве проекта в правой части окна визуального конструктора отчетов раскроем узел Data View Dictionary и в нем раскроем вновь созданный узел DataViewl;
• выбрав команду Toolls\Report Wizards\Simple Table, запустим Мастер создания простых таблиц в отчете, выберем вариант DataViewl и нажмем кнопку Next;
• на последующих шагах работы с Мастером выберем поля таблицы для отображения в отчете, при необходимости изменим очередность следования полей, установим параметры полей страницы, текст заголовков и шрифтов, используемых в отчете (рис. 11.10);
320
Часть II. Технологии доступа к данным
на заключительном этапе работы с Мастером нажатием кнопки Generate запустим процесс генерации отчета;
для просмотра сгенерированного отчета выберем команду File\Execute Report, в открывшемся диалоговом окне Output Options в поле Report Destination выберем переключатель Preview и нажмем ОК. Вид полученного нами отчета при просмотре приведен на рис. 11.11;
Глава 11. Создание и просмотр отчетов с помощью Rave Reports
321
• при необходимости выполним настройку параметров (шрифта, цвета и др.) отдельных составляющих созданного отчета;
• сохраним созданный нами проект отчета в файле с произвольным именем, например STRep, и расширением rav с помощью команды File\Save As;
• свернем или закроем диалоговое окно работы с визуальным конструктором отчета и вернемся к работе с приложением в Delphi.
4. В форму приложения базы данных со страницы Rave Палитры поместим компонент проекта отчета RvProject и установим в значение C:\Program Fiies\Boriand\Deiphi7\Rave5\STRep.RAV (спецификация созданного нами файла проекта) свойство ProjectFile этого компонента с помощью Инспектора объектов.
5. В форму приложения базы данных со страницы Standard Палитры компонентов поместим кнопку (компонент Button) и в качестве обработчика события Onclick нажатия этой кнопки зададим вызов метода ExecuteReport, обеспечивающего выполнение отчета с заданным именем (в нашем примере Reports) из состава проекта отчета (компонента RvProjectl), например так:
procedure TForml.ButtonlClick(Sender: TObject);
begin
RvProj ectl.Open;
try
RvProj ectl.ExecuteReport('Report5'); finally
RvProj ectl.Close; end; end;
6. С помощью клавиши <F9> запустим приложение на выполнение, и в форме
щелкнем мышью на кнопке, за которой закреплен созданный нами обработ
чик события. В открывшемся диалогоовм окне выберем вариант печати отче
та и нажмем кнопку ОК.
В результате выполненных действий будет выдан на печать простой табличный отчет, содержащий данные из таблицы приложения базы данных, вид которого в окне просмотра приведен на рис. 11.11.
Глава 12
Инструменты
Инструменты — это программы, предназначенные для обслуживания БД, а также для выполнения вспомогательных действий при разработке приложений, например, для создания таблиц и отладки SQL-запросов. Совместно с Delphi поставляется большое число инструментов, применимых для работы как с локальными, так и с удаленными БД. В этой главе рассматриваются инструменты для работы с локальными базами данных. Инструментальные программы, предназначенные для работы с удаленными БД, представлены в главе 15.
Программа BDE Administrator
Программа BDE Administrator представляет собой инструмент администрирования процессора баз данных BDE (далее Администратор BDE, или Администратор). Для вызова Администратора BDE запускается файл bdeadminxxe, находящийся в одном каталоге с процессором баз данных. Внесенные изменения сохраняются по окончании работы с Администратором в файле конфигурации idapi32.cfg. Программу также можно вызвать через главное меню Windows выбором пункта Program\Borland Delphi 7\BDE Administrator.
Администратор BDE позволяет настраивать параметры БД и операционной системы. Основные параметры:
□ параметры псевдонима БД:
• название;
• тип;
• путь;
□ параметры драйвера:
• тип;
• язык;
□ системные установки:
• установки по умолчанию;
• форматы даты, времени и числовые форматы.
Глава 12. Инструменты
323
Для настройки требуемого параметра в левой части окна Администратора BDE нужно выбрать нужный объект, после чего в правой части окна открывается доступ к списку параметров этого объекта. При редактировании выбранного в панели инструментов объекта становятся доступными кнопки отмены/подтверждения сделанных изменений (с красной/синей стрелкой). Отменить или подтвердить изменения также можно командами Cancel и Apply главного или контекстного меню. Слева от объектов, имеющих неутвержденные изменения, отображается зеленый треугольник.
Добавить новый объект можно, выбрав в окне Администратора пункт меню Object\New. Удаление выделенного объекта выполняется командой Object\Delete главного или контекстного меню или нажатием кнопки Delete панели инструментов (с синим косым крестом).
Текущее состояние объекта, выбранного в левой части окна, отображает значок, который появляется слева от имени объекта. Варианты значков и их связь с состоянием объекта перечислены ниже.
□ Зеленый треугольник — объект находится в режиме редактирования (имеет неутвержденные изменения).
□ Зеленый треугольник с красными лучами — вновь созданный и еще не сохраненный в конфигурации объект, для которого выполняется редактирование.
□ Красный треугольник — объект находится в режиме редактирования, некоторые изменения являются некорректными и не могут быть сохранены.
□ Красный треугольник с красными лучами — созданный и еще не сохраненный в конфигурации объект находится в режиме редактирования, некоторые данные являются некорректными и не могут быть сохранены.
□ Ярко-зеленый квадрат — объект открыт.
Из приложения можно управлять настройками BDE с помощью соответствующих методов компонента session, который рассматривается в главе 13.
Работа с псевдонимами
Псевдоним (alias) указывает местонахождение файлов БД и представляет собой специальное имя для обозначения каталога. Использование псевдонимов существенно облегчает перенос файлов БД в другие каталоги и на другие компьютеры. При этом не требуется изменять приложение, которое осуществляет доступ к таблицам БД. Если в приложении расположение таблиц указано с помощью псевдонима, то после перемещения БД для обеспечения работоспособности приложения достаточно изменить значение пути, заданное в псевдониме. Если же в приложении путь к БД указан в явном виде, т. е. без псевдонима, то после перемещения БД нужно изменять само приложение — вносить изменения в исходный код и заново его транслировать.
Для создания псевдонима базы данных перед вызовом пункта меню Object\New Администратора BDE нужно выбрать вкладку Database в левой части окна, в противном случае команда New меню будет недоступна. После задания этой
324
Часть II. Технологии доступа к данным
команды появляется диалоговое окно New Database Alias (Новый псевдоним БД), в котором нужно выбрать тип драйвера. Для локальных таблиц Paradox и dBase выбирается тип standard, для других таблиц указывается соответствующий тип, например, для удаленного сервера InterBase — тип intrbase.
После нажатия кнопки ОК создается псевдоним и его данные отображаются в окне Администратора BDE (рис. 12.1). Новый псевдоним автоматически получает имя standardi и параметры по умолчанию. Можно переименовать псевдоним, выполнив команду Rename контекстного меню псевдонима или меню Object главного меню Администратора BDE.
Псевдоним для работы с локальными БД имеет три параметра.
□ default driver — указывает формат таблиц БД (по умолчанию имеет значение Paradox). Кроме того, можно установить значения dBase или asciidrv для текстовых файлов, разбитых на колонки.
□ enable bcd — указывает на необходимость перевода чисел в формат BCD, что позволяет более точно выполнять вычисления, но уменьшает скорость их выполнения. По умолчанию имеет значение False и, соответственно, формат BCD не используется.
□ path — указывает расположение (каталог) БД. После создания псевдонима путь не определен, и разработчик должен установить его самостоятельно.
Отметим, что псевдонимы для удаленных БД имеют большее число параметров, например, у псевдонима типа intrbase пятнадцать параметров.
При необходимости можно изменить параметры псевдонима, например, имя и путь. Для параметров default