Лабораторная работа №7

 

Разработка отчетов в Rave Reports 5.0

 

Цель работы: изучить программный продукт Rave Reports, используя его возможности научиться создавать простые и сложные запросы.

 

Основные теоретические сведения

1. Что такое Rave Reports?

Rave Reports – это программный продукт, интегрированный с Delphi 7, для создания всевозможных отчетов. В Delphi 7 Rave Reports является основным средством создания отчетов, и его компоненты по умолчанию появляются в Палитре компонентов на странице Rave. Генератор отчетов устанавливается при инсталляции Delphi в папку \Delphi7\Rave5. Исходные коды компонентов разработчикам в Delphi недоступны. Создателем Rave Reports является фирма Nevrona. Пользователи предыдущих версий Delphi знакомы с этой фирмой по генератору отчетов QuickReport. Кстати, Delphi 7 поддерживает и QuickReport, однако программисту необходимо вручную осуществить его подключение. При этом схема создания и внедрения отчетов в приложения Delphi практически не изменилась.

 

2. Структура Rave Reports.

Генератор отчетов Rave Reports 5.0 состоит из трех частей:

·         ядро генератора отчетов обеспечивает управление отчетом, его предварительный просмотр, и отправку на печать. Исполняемый код ядра включается в приложение Delphi, делая его полностью автономным при работе с отчетами на компьютере клиента;

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

·          компоненты расположены на странице Rave Палитры компонентов Delphi. Они обеспечивают управление отчетами в приложении.

 

3. Алгоритм разработки и использования отчетов.

1) Анализ предметной области (определение видов отчетов, способа представления данных, способа отображения отчетов и т.д.).

2) Проектирование шаблонов отчетов в визуальной среде разработки.

3) Программирование логики построения отчетов.

 

4. Визуальная среда разработки Rave Reports

Открыть визуальный редактор Rave Reports можно двумя способами:

1). Из главного меню Delphi 7 необходимо открыть «ToolsRave Designer»

2). Двойным щелчком по компоненте TRvProject.

Проект Rave Reports – совокупность отчетов. Проект сохраняется в файле с расширением rav, другими словами, файл RAV — это проект будущего отчета, содержащий общую информацию об отчете, оформление его страниц и правила их заполнения.

Отчет Rave Reports - совокупность страниц. Каждая страница может быть оформлена графическими или текстовыми элементами или отображать данные из какой-либо базы данных.

 

Задачи, которые позволяет решать визуальная среда:

·         загрузка, редактирование и сохранение проектов отчетов в файлах RAV; 

·         создание структуры отчета и определение его основных свойств;

·         разработка страниц отчета;

·         подключение к отчету источников данных и использование этих данных при оформлении страниц отчетов;

·         генерация отчета на основе созданного шаблона, его предварительный просмотр или печать.

Пользовательский интерфейс визуальной среды создания отчетов Rave Reports во многом напоминает среду разработки Delphi. В верхней части окна располагается панель инструментов, состоящая из набора кнопок слева и Палитры инструментов справа. В Палитре инструментов располагаются не только элементы оформления отчетов, но и инструменты для их настройки и управления.

Давайте посмотрим, для чего предназначены закладки Палитры инструментов:

Закладка Палитры инструментов

Назначение

Элементы оформления отчетов

Drawing

Содержит графические элементы оформления

Ваг Code

Содержит различные типы штрихкодов

Standard

Содержит элементы оформления, позволяющие размещать на страницах отчета текст и изображения

Report

Содержит элементы оформления, предназначенные для отображения данных из внешних источников данных, подключенных к отчету

Инструменты управления и настройки страниц и элементов оформления

Zoom

управляет увеличением текущей страницы

Colors

позволяет установить цвета элементов оформления и страниц

Lines

задает стиль и толщину линий элементов оформления

Fills

задает стиль заполнения элементов оформления

Fonts

позволяет задать параметры шрифта для текста

Alignment

управляет выравниванием элементов оформления на странице

 

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

Закладка Event Editor обеспечивает создание методов-обработчиков событий для отчетов, страниц, элементов оформления и т. д.

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

В левой части окна среды разработки располагается аналог Инспектора объектов Delphi, в котором доступны свойства текущего элемента. В нижней части этой панели отображается подсказка для текущего свойства.

Далее будет рассмотрена панель проекта отчетов и закладка «Standart» Палитры инструментов. Закладки «Drawing» и  «Bar Code» не рассматриваются ввиду элементарности первой и ненужности для решения наших задач второй.

 

4.1 Проект отчета

Визуальная среда работает с проектом отчета, который создается или загружается из файла с расширением rav. Состав проекта отчета отображается в дереве проекта отчета в панели в правой части окна визуальной среды.

 

Корневой элемент RaveProject содержит три дочерние ветви:

·                      Report Library — библиотека отчетов включает все шаблоны отчетов, содержащиеся в этом проекте;

·                     Global Page Catalog — каталог глобальных страниц содержит перечень страниц, не принадлежащих какому-либо из отчетов проекта;

·                      Data View Dictionary — словарь просмотров данных содержит созданные соединения с внешними источниками данных.

 

 

1). Библиотека отчетов

Каждый из этих отчетов описывает отдельный, самостоятельный отчет. Любой из них может быть загружен в компонент TRvproject для использования в приложениях Delphi. Первый отчет в списке по умолчанию становится текущим. Для смены текущего отчета достаточно дважды щелкнуть на нем в дереве проекта и это состояние будет сохранено при закрытии проекта. Для того чтобы добавить к проекту новый отчет, можно использовать кнопку на главной панели окна визуальной среды или команду «FileNew Report» главного меню. Для удаления отчета достаточно сделать его текущим и нажать клавишу <Delete>. Для каждого отчета необходимо заполнить свойства Name и FullName, которые используются для идентификации отчета при работе с ним в Delphi (см. гл. 23). Кроме этого, в свойстве Description полезно заполнить описание отчета и задать единицы измерения, т. к. по умолчанию установлено использование дюймов.

Отчет может содержать произвольное число страниц. Напечатать можно как все страницы, так и их произвольное подмножество. Для разработчика список страниц отчета, которые предлагаются к печати по умолчанию, доступен в свойстве PageList. С этим свойством связан редактор страниц Page List Editor, который позволяет выбирать страницы отчета и формировать из них список для печати. При этом одна страница может быть включена в список несколько раз.

Для добавления к текущему отчету новой страницы используйте кнопку на главной панели окна визуальной среды или команду «FileNew Report Page» главного меню. Для удаления выберите страницу и нажмите клавишу <Delete>.

Страница имеет имя, задаваемое свойством Name, а также несколько свойств, задающих ее важнейшие параметры: Orientation, PageSize, PageHeight, PageWidth. Свойство GotoPage позволяет задать страницу, которая будет напечатана после этой. Порядок печати страниц по умолчанию соответствует их порядку в дереве отчета. Свойство GridLines позволяет задать плотность измерительной сетки, накладываемой на страницу в визуальной среде для удобства размещения элементов оформления.

2). Каталог глобальных страниц

Каталог глобальных страниц объединяет страницы, доступные из любого отчета библиотеки отчетов. Таким образом вы можете оформить все отчеты проекта одинаково. Например, для всех отчетов можно создать глобальные страницы титульного листа, общего заголовка и т. д. Добавить новую страницу можно при помощи команды главного меню «FileNew Global Page». После этого страница появляется в списке каталога и доступна для редактирования. Глобальная страница добавляется в отчет при помощи редактора страниц (см. рис. 24.3). Для этого необходимо выбрать нужную страницу из списка Global Pages и нажать на кнопку Add Global.

3). Словарь просмотров данных

Словарь просмотра данных объединяет разнообразные объекты доступа к данным. Для создания нового объекта необходимо воспользоваться командой главного меню «FileNew Data Object». После этого открывается диалог выбора типа объекта Data Connections.

Здесь доступны следующие типы объектов:

·                      Data Lookup Security Controller — организует аутентификацию пользователя по имени и паролю при использовании одного из просмотра данных;

·                     Database Connection — создает соединение с внешним источником данных на основе одной из трех технологий доступа к данным: ADO, BDE, db Express;

·                      Direct Data View — создает просмотр данных на основе активного соединения с источником данных;

·                      Driver Data View — создает просмотр данных на основе ранее созданного в словаре соединения;

·                      Simple Security Controller — представляет собой список пользователей, который может быть использован для организации доступа в отдельных отчетах.

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

 

4.2 Элементы для представления текста и изображений (закладка Standart)

На странице Standard Палитры инструментов расположены элементы оформления, предназначенные для отображения текста и изображений.

Элемент

Описание

    Text

Используется для представления однострочного текста. Текст задается свойством Text. Другие стандартные свойства позволяют настраивать шрифт, цвет и т. д. Кроме этого, свойство Rotation позволяет повернуть текст на любой угол в диапазоне от 0 до 360 градусов.

    Memo

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

    Section

Используется, если вам необходимо объединить несколько элементов оформления в группу (например, несколько строк текста и изображений в заголовке страницы) и использовать их на странице совместно. Размещенные на нем другие элементы как бы оказываются на самостоятельной странице, ограниченной элементом section. Вы можете выделять и перемещать отдельные элементы, но делать это только внутри секции. А при перемещении секции по странице все расположенные на ней элементы также перемещаются вместе с ней. Выравнивание элементов тоже работает по границам секции.

     Bitmap

Используется для представления изображений. Он позволяет оформлять отчеты изображениями, сохраненными в файлах в формате BMP. Для загрузки изображения используется диалог, открывающийся при щелчке на кнопке свойства image. Также при помощи свойства FileLink можно связать элемент с файлом изображения и при печати отчета оно будет загружено. Кроме этого, изображение можно загрузить из базы данных. Для этого используются свойства Dataview (определяет объект просмотра данных) и DataField (задает поле изображения).  Изображение можно масштабировать. Для этого используется свойство Matchside. При его значениях msHeight, mswidth, msBoth изображение соответственно масштабируется по горизонтали, вертикали или в двух измерениях. Естественно, при этом может произойти искажение изображения. А вот при значении msinside изображение будет масштабировано пропорционально.

     MetaFile

Обладает аналогичными Bitmap – элементу свойствами. Но изображение в формате WMF загружается в него при помощи свойства FileLink или DataField.

   FontMaster

Этот не визуальный элемент оформления позволяет задать единые свойства шрифта для группы элементов оформления. Его свойство Font определяет шрифт. И этот шрифт будет использоваться всеми элементами, в чьих свойствах FontMirror будет указан данный элемент FontMaster.

 pageNumInit

Этот не визуальный элемент оформления обеспечивает нумерацию страниц, начиная с той, на которой он расположен. Свойство initvalue задает номер, с которого начинается отсчет нумерации. А при помощи свойств initoataview и initoataFieid можно загрузить это значение из базы данных.

 

4.3 Обработка событий

Каждому отчету, странице или элементу оформления можно назначить один или несколько методов-обработчиков событий. Для этого используется Редактор событий Event Editor, доступный через одноименную закладку в центральной части окна визуальной среды Rave Reports. Для текущего элемента здесь можно выбрать из списка Avaiable Events одно из доступных для обработки событий. При этом будет создан обработчик события, программный код которого вводится в окне редактора внизу. В списке Defined Events отображаются события, обрабатываемые текущим элементом. Синтаксис кода, используемый для обработки событий, аналогичен синтаксису Object Pascal. При этом можно применять некоторые процедуры и функции Delphi.

Например, в метод-обработчик события BeforePrint элемента оформления Text1 можно поместить следующий код: «Text1.Text := IntToStr(StrToInt(Text1.Text) + 1);» который обеспечит нумерацию страниц отчета. Проверка созданного кода выполняется при нажатии кнопки Compile.

 

4.4 Соединение с внешними источниками

Все объекты, обеспечивающие доступ к внешним источникам данных из отчетов проекта, собраны в словаре просмотра данных Data View Dictionary..

Рассмотрим этапы подключения к внешнему источнику данных:

1). Новый объект создается командой «FileNew Data Object» главного меню. В первую очередь необходимо создать соединение с источником данных. Для этого в диалоге необходимо выбрать объект соединения Database Connection и, после нажатия кнопки Next, в следующем окне выбрать одну из трех возможных технологий доступа к данным: ADO, dbExpress, BDE. В зависимости от сделанного выбора настраиваются параметры соединения.

 

 

 

 

           

  à

После завершения настройки готовое соединение появляется в списке Data View Dictionary.

Например, при выборе BDE появится окно настройки соединения, где можно указать псевдоним базы, к которой производится подключение:

2). На втором этапе к работающему соединению можно подключать объекты просмотра данных. В диалоге Data Connections  надо выбрать тип объекта доступа к данным Driver Data View и нажать на кнопку Next. Затем в следующем окне нужно выбрать одно из существующих соединений. После этого появляется диалог Query Advanced Designer.

 

 

 

 

 à 

Диалог Query Advanced Designer:

В этом диалоговом окне нужно выбрать из списка доступных таблиц источника данных необходимые и задать требуемые соотношения между полями. Страница Layout двухстраничного диалога позволяет выбирать таблицы. Нужная таблица выбирается из списка Tables в правой части и перетаскивается в левую часть, где каждая таблица представляется в виде списка полей. Необходимые поля также можно выбирать для будущего использования. Перетаскиванием полей между таблицами можно задавать внешние ключи. Страница Layout очень напоминает закладку Diagrams в Delphi и выполняет приблизительно те же функции. Страница Sorting & Gouping позволяет выбрать поля  для сортировки и группировки. Здесь в списке слева представлены выбранные ранее таблицы и поля. Поля можно переносить в список Sort Fields справа. Поля в этом списке будут использованы для сортировки наборов данных. А из полей для сортировки можно выбрать поле для группировки. Для этого используется список Group By. При нажатии на кнопку Editor появляется редактор с текстом запроса SQL, реализующий все сделанные ранее настройки. При необходимости его можно исправить вручную. После завершения настройки просмотра новый объект просмотра появляется в словаре просмотра данных Data View Dictionary и может использоваться в отчетах. Созданный запрос просмотра доступен через его свойство Query.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.5 Безопасность доступа к данным

На третьем этапе созданное соединение и просмотр можно "защитить". Для этого из списка в диалоговом окне Data Connections (см. рис. 24.4) выбирается объект аутентификации Data Lookup Security Controller. Он сразу же появляется в словаре просмотра данных Data View Dictionary. Остается только подключить его к нужному просмотру. Для этого используется его свойство Dataview, в котором необходимо задать требуемый объект просмотра. Списки имен пользователей и их пароли задаются свойствами UserField и PasswordField соответственно. Объект аутентификации можно подключить и для использования в отдельном отчете. Для этого применяется свойство securityControl отчета, в котором указывается нужный объект. Еще один объект — простой объект аутентификации (объект Simple Security Controller в диалоговом окне Data Connections) — в свойстве userList содержит список имен и паролей в формате UserName=Password. Он может использоваться только в отчетах.

 

4.6 Отображение данных в отчете

Для представления данных в отчетах предназначены специализированные элементы оформления, представленные на странице Report Палитры инструментов.

Они делятся на две функциональные группы:

1).  В первую группу выделены элементы, обеспечивающие размножение строк в отчете, их заполнение данными, а также группировку при создании сложных отчетов. Эти элементы называются структурными.

Элемент

Описание

Region

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

Band

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

DataBand

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

 

2). Во второй группе объединены элементы оформления, созданные на основе стандартных и обеспечивающие отображения текущего значения конкретного поля таблицы просмотра.

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

 

Элемент

Описание

DataText

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

DataMemo

используется при необходимости показать данные в формате Memo или BLOB.

calcText

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

DataMirrorSection

так же как и его предок Section, объединяет группу других элементов для совместного использования

Bitmap

Изображение можно загрузить из базы данных.

 

Все перечисленные элементы (в том числе и элемент Bitmap) связываются с просмотром данных и полем одинаково.

·         Свойство DataView определяет, какой просмотр данных используется элементом.

·         Свойство DataField задает поле просмотра, значения которого будут отображаться элементом.

 

5. Компоненты закладки Rave

Здесь приведены названия и описания компонентов для построения отчетов.

 

Компонент

Описание

TRvproject

 Компонент отчета обеспечивает загрузку заранее созданного в визуальной среде Rave Reports отчета из файла с расширением rav.

TRvSystem

Компонент управления отчетом обеспечивает работу приложения с отчетом. Этот компонент обеспечивает просмотр и печать отчетов.

·                     TRvCustomConnection;

·                      TRvDataSetConnection;

·                      TRvTableConnection;

·                      TRvQueryConnection

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

·                     TRvNDRWriter;

·                      TRvRenderHTML;

·                      TRvRenderPreview

·                      TRvRenderRTF;

·                      TRvRenderPrinter;

·                      TRvRenderText.

·                      TRvRenderPDF;

Компоненты преобразования данных позволяют конвертировать отчеты из формата данных Rave Reports в другие форматы (текстовый, PDF, HTML, RTF), а также распечатывать или просматривать отчеты.

 

5.1 Компонент TRvProject.

Обеспечивает связь с отчетом, а точнее с проектом Rave Reports.

Основные свойства компонента TRvProject:

Свойства

Значения

Описание

ProjectFile: string

 

Данное свойство содержит файл проекта Rave Reports.

Engine: TRpComponent;

 

Содержит имя компонента управления отчетом.

ReportName: String;

 

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

ReportFullName: String;

 

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

ReportDesc: String;

 

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

StoreRAV: Boolean;

 

Позволяет прикомпилировать к приложению файл проекта Rave Reports. При щелчке на кнопке в строке этого свойства в Инспекторе объектов открывается специализированный редактор Load Into Exe, который предлагает выбрать файл проекта.  

RaveBlobDateTime: TDateTime;

 

Содержит дату и время загрузки прикомпилированного проекта.

Active: Boolean

True

Проект Rave Reports открыт для редактирования

False

Проект Rave Reports закрыт для редактирования

 

Основные методы компонента TRvProject:

Методы

Описание

procedure LoadFromFile(FileName: String);

Загружает проект Rave Reports из внешнего файла. Удобно использовать, когда необходимо предоставить пользователю возможность самому выбирать набор отчетов. Активный отчет из загруженного проекта становится текущим.

FileName – имя файла проекта с расширением.

function SaveToFile(FileName: String);

Сохраняет проект Rave Reports во внешний файл.

FileName – имя файла проекта с расширением.

function SelectReport(ReportName: string; FullName: boolean): boolean;

Осуществляет смену активного отчета в загруженном проекте.

ReportName – имя отчета

FullName – вид имени отчета

True – в ReportName указано полное имя отчета

False – в ReportName указано имя отчета (свойство Name отчета)

procedure GetReportList(ReportList: TStrings;FullName: boolean);

Позволяет получить имена всех отчетов (Report) загруженного проекта.

ReportList - список строк, где каждая строка это имя отчета.

FullName – определяет полное (FullName) или обычное (Name) имя используется для отчетов

True – в ReportList указаны полные имена отчетов

False – в ReportList указаны полные имена отчетов (свойство Name отчета)

procedure Execute;

Осуществляет печать всего активного отчета.

 

procedure ExecuteReport(ReportName: string);

Осуществляет печать активного отчета, при этом он должен находиться в режиме редактирования.

ReportName – осуществляет печать активного отчета, значение параметра должно точно соответствовать свойству ReportName компонента TRvProject.

procedure Open;

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

 

procedure Save;

Сохраняет изменения в активном отчете.

 

procedure Close;

Закрывает активный отчет

 

 

5.2 Компонент TRvSystem

Компонент управления отчетом TRvSystem обеспечивает выполнение основных операций с отчетом из приложения (печать и просмотр). В приложении он должен быть связан с компонентом TRvProject. Этого вполне достаточно, чтобы компонент TRvSystem выполнил свою работу. У разработчика нет необходимости вызывать какие-либо методы компонента, чтобы направить отчет на печать.

В TRvSystem инкапсулированы объекты, обеспечивающие вывод отчета из компонента TRvProject в один из трех системных приемников:

·          файл (объект класса TSystemFiler);

·          предварительный просмотр (объект класса TSystemPreview);

·          принтер (объект класса TSystemPrinter).

Основные свойства TRvSystem:

Свойство

Значения

Описание

ReportDest: TReportDest;

 

Указывает куда будет произведен вывод отчета

rdPreview

Отчет будет выведен на экран монитора (режим предварительного просмотра)

rdPrinter

Отчет будет выведен на бумагу (режим печати)

rdFile

Отчет будет записан в файл

SystemFiler: TSystemFiler

 

Составное свойство, в котором указаны параметры файла, в который будет направлен отчет. Имеет смысл при ReportDest=rdFile

FileName: string

 

Имя файла, в который будет направлен отчет

SystemPreview: TSystemPreview;

 

Составное свойство, в котором указаны параметры предварительного просмотра отчета. Его свойства совпадают со свойствами компонента TRvRenderPreview. Имеет смысл при

ReportDest= rdPreview

SystemPrinter: TSystemPrinter;

 

Составное свойство, в котором указаны параметры печати отчета. Его свойства совпадают со свойствами компонента TRvRenderPrinter. Имеет смысл при ReportDest= rdPrinter

TitleSetup: TFormatString;

 

Заголовок диалога настройки печати

property SystemSetups: TSystemSetups;

 

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

ssAllowSetup

разрешает или запрещает использование диалога настройки печати

ssAllowCopies

управляет доступностью установки числа копий отчета

ssAllowCollate

разрешает или запрещает настройку режима печати с разбором страниц по копиям

ssAllowDuplex

разрешает или запрещает настройку двусторонней печати

ssAllowDestPreview

разрешает или запрещает использование окна предварительного просмотра

ssAllowDestPrinter

разрешает или запрещает использование принтера

ssAllowDestFile

разрешает или запрещает использование файла для вывода отчета

ssAllowPrinterSetup

разрешает или запрещает использование диалога настройки параметров принтера

TitleStatus: TFormatString;

 

Заголовок окна статуса

SystemOptions: TSystemOptions;

 

Управляет процессом вывода отчета

soUseFiler

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

soWaitForOK

если включить эту опцию, генерация отчета будет задержана до момента, когда пользователь нажмет кнопку ОК в диалоге настройки печати компонента

soShowStatus

эта опция управляет видимостью окна состояния процесса вывода отчета в компоненте

soAllowPrintFromPreview

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

soPreviewModal

при значении True делает окно предварительного просмотра модальным

 

6. Отчеты для приложений баз данных.

Генератор отчетов Rave Reports позволяет создавать отчеты, отображающие данные из различных источников данных. Для этого используются средства визуальной среды и компоненты со страницы Rave Палитры компонентов Delphi.

В Rave Reports существуют два типа соединений с источниками данных:

ü      соединение через драйвер Rave Reports;

ü      соединение через компонент Rave Reports и компонент набора данных в приложении Delphi.

 

·    ADO;

·    db Express

·    BDE.

Кроме этого, компонент TRvDataSetConnection (без участия визуальной среды) позволяет использовать любые наборы данных, открываемые через компоненты доступа к данным Delphi. Еще один интересный компонент TRvCustomConnection обеспечивает доступ к любым данным не из баз данных. Для него источником данных могут быть текстовые файлы, электронные таблицы, электронная почта и т. д. Что касается элементов оформления отчетов средствами визуальной среды Rave Reports, можно создавать отчеты самых различных типов. Естественно, это простые табличные отчеты, а также отчеты, представляющие данные в отношении "один-ко-многим", отчеты с группировкой данных, отчеты с вычисляемыми значениями.

 

6.1 Соединения с источниками данных в приложении

Для создания соединения можно использовать следующие компоненты:

·         TRvcustomConnection — обеспечивает доступ к источникам данных, не основанным на базах данных;

·         TRvDataSetConnection — создает соединение с любыми компонентами наборов данных, предком которых является класс TDataSet;

·         TRvTabieConnection — создает соединение с компонентом TTаblе;

·         TRvQueryConnection —создает соединение с компонентом TQuery.

Их основная задача — передать в отчет связанный набор данных. После переноса на форму проекта Delphi эти компоненты становятся доступны для выбора при создании прямых просмотров Direct Data View в визуальной среде создания отчетов Rave Reports. Однако перед этим компонент соединения необходимо связать с набором данных.

Компонент TRvDataSetConnection

Компонент TRvDataSetConnection позволяет отчету получить доступ к наборам данных, инкапсулированных в любых компонентах, произошедших от класса TDataSet. Это открывает перед разработчиком самые широкие возможности по созданию отчетов для любых приложений баз данных и распределенных приложений. Сразу после переноса на форму компонент становится доступным в визуальной среде Rave Reports при создании объекта прямого просмотра. Однако толк от ненастроенного соединения пока небольшой. Сначала его нужно связать с компонентом набора данных. Для этого предназначено свойство property DataSet: TDataSet;

И это все. Теперь созданный в визуальной среде объект прямого просмотра автоматически получит объекты полей, соответствующие полям в наборе данных компонента DataSet. Впрочем, еще несколько вспомогательных свойств могут дать разработчику дополнительные удобства.

Свойства

Свойство

Значения

Описание

FieldAliasList: TStrings;

 

Позволяет изменить имена полей в прямом просмотре проекта отчета

 

Обработчики событий

Обработчик

Условие запуска

OnOpen: TRPConnectorEvent

При открытии соединения

OnGetCols: TRPConr.ectorEvent;

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

OnFirst: TRPConnectcrEvent;

Когда курсор устанавливается на первую строку набора данных

OnNext: TRPConnectorEvent

Когда курсор устанавливается на следующую строку строку набора данных

OnGetRow: TRPConnectorEvent

Если генератор отчетов нашел нужную запись и считал ее для представления в отчете

OnEOF: TRPEOFEvent

При достижении последней записи набора

OnRestore: TRPConnectorEvent;

При повторном использовании набора данных

 OnGetSort: TRPConnectorEvent; OnSetSort: TRPConnectorEvent;

OnGetFilter: TRPConnectorEvent

OnSetFilter: TRPConnectorEvent;

Перед началом сортировки и фильтрации и после их завершения

OnValidateRow: TRPValidateRowEvent;

Обеспечивает дополнительную фильтрацию записей, передаваемых из набора данных в отчет

 

 

 

Компоненты, использующие BDE

В состав набора компонентов соединений Rave Reports включены два компонента, которые обеспечивают связь прямого просмотра в проекте отчета с набором данных BDE. Компонент TRvTableConnection работает с компонентом TTаblе. Для связывания с таблицей BDE используется свойство property Table: TTable;  Еще одно свойство property UseSetRange: Boolean; при значении True определяет, что при создании отчета будут использованы механизмы фильтрации и сортировки компонента TTаblе. Компонент TRvQueryConnection работает с компонентом TQuery. Свойство property Query: TQuery; задает компонент TQuery. Остальные свойства и методы этих компонентов соответствуют компоненту TRvDataSetConnection.

Компонент TRvCustomConnection

Компонент TRvCustomConnection обеспечивает доступ к самым разнообразным источникам данных. Фактически через этот компонент разработчик может передать в отчет все данные, какие только сможет загрузить в приложение. Причина столь удивительной универсальности кроется в том, что:

·          во-первых, компонент изначально не ориентирован ни на один конкретный вид данных;

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

Повторим банальную истину, что чудес не бывает, и, как видите, за гибкость приходится расплачиваться дополнительным объемом работы. Для того чтобы настроить соединение через компонент TRvCustomConnection, необходимо выполнить следующие действия.

1. Определить число строк отчета и установить его в компоненте.

2. Создать структуру данных отчета (метаданные). Здесь нужно решить, какие именно поля будут присутствовать в отчете, в каком порядке, дать им названия и определить их тип данных.

3. Создать процедуру, обеспечивающую передачу данных из источника данных в текущую строку отчета.

4. Связать компонент соединения с объектом прямого просмотра.

Метод-обработчик onGetCols вызывается, когда отчету необходимы метаданные о наборе данных соединения. Для этого используется метод

procedure WriteField(Name: String; DataType; TRPDataType; Width: Integer; FullName: String; Description: String);

который создает поле в соответствии с переданными в нем параметрами.

И при печати отчета для каждой строки вызывается метод-обработчик OnGetRow, в котором задаются значения полей. Для каждого типа данных используется свой метод:

function WriteBCDData(FormatData: String; NativeData: Currency): String;

function WriteBlobData(var: Buffer; Len: Longint): String;

function WriteBoolData(FonnatCata: String; NativeData: Boolean): String;

function WriteCurrData(FormatData: String; NativeData: Currency): String;

function WriteDateTime(FormatData: String; NativeData: TDateTime);

function WriteFloatData(FomatData: String; NativeData: Extended): String;

function WritelntData(FormatData: String; NativeData: Integer): String;

function WriteNullData;

function WriteStrData(FormatData: String; NativeData: String): String;

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

 

Примечание 

Методы-обработчики компонентов TRvCustomConnection и TRvDataSetConnection совпадают.

Теперь осталось связать соединение с проектом отчетов. Это делается стандартным образом — при создании объекта прямого просмотра. Но здесь есть одна особенность. Как уже говорилось выше, при создании прямого просмотра в нем автоматически создаются объекты полей, соответствующие полям набора данных. И теперь мы знаем, что у компонента соединения имеется специальный метод-обработчик OnGetCols, который вызывается при создании полей.

Однако, если вы создадите объект прямого просмотра обычным способом, визуальная среда Rave Reports создаст один-единственный объект поля, не имеющего ничего общего с реальными метаданными. Для того чтобы поля импортировались в проект отчета правильно, необходимо, чтобы при создании объекта просмотра приложение, содержащее компонент TRvDataSetConnection, было запущено. Тогда в диалоге выбора соединений (см. рис. 26.4) необходимо включить флажок Runtime, и вы увидите компонент нужного соединения. В этом случае объект прямого просмотра получит все необходимые поля, которые затем следует связать с элементами оформления отчета.

7. Помощники (Wizards)

Помощники (Wizards) новое средство в Rave, которое позволяет создать определенные типы отчетов, отвечая на  серию вопросов. Они расположены в меню Tool. Помощники могут быть добавлены и удалены в зависимости от нужд пользователя. Это превосходный путь минимизации пользовательского интерфейса для выполнения требуемых задач по отчетам.

Есть два помощника, "Simple Table" и "Master-Detail". Помощники запрашивать назначение подключения данных и позволять выбрать нужные поля для отчета. Важно заметить, что должен быть активный DataView до запуска помощника, или это должен быть Direct Data View или SQL Data View. Простые отчеты обычно создаются для списков. Обычное использование включает списки клиентов, телефонные списки и подобное. Помощник Master-Detail используется, когда требуются более сложные отчеты, такие как счета, списки на заказ продукции и подобное.

Независимо, что будет использовано, есть несколько шагов, которые общие для обоих помощников. Это включает выбор DataView, выбор полей и будет рассмотрено в упражнениях, в конце данной главы.

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

 

Упражнения

Ниже примеры упражнений по обоим помощникам Simple и Master-Detail. Поскольку большинство шагов одинаковы для обоих помощников, то они будут рассмотрены подробно только в первом упражнение. Поэтому рекомендуется начать именно с первого упражнения, что бы получить лучшие  навыки по представленной концепции.

 

Пример 1: простой отчет

1.      первый шаг это выбор DataView, который будет предоставлять данные для отчета.

2.      После выбора DataView, появится список полей, из которого можно сделать выбор. Выбор полей осуществляется щелчком слева на рамке. Выбор всех полей делается щелчком на кнопке All вверху. Заметим, что выбор множества полей, которые не поместятся на странице, приведет к перекрытию. Потребуется ручное вмешательство после окончания работы помощника, для устранения проблемы.

3.      если было выбрано более одного поля в предыдущем шаге, то помощник спросит про порядок полей. Перемещение поля вверх перемещает его влево на странице. Перемещение в нижнюю позицию перемещает поле на правую границу.

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

5.      последний шаг помощника это выбор шрифтов, которые будут использованы в отчете. Предоставлены возможности по смене трех шрифтов: заголовки отчета, заголовки имен колонок и содержимого полей.

 

Пример 2: Master-Detail отчет

Помощник Master-Detail Report имеет несколько дополнительных шагов, больше чем в простом отчете. Это связано с тем фактом, что используется больше одной таблицы в отчете. В действительности здесь есть главная таблица (например, информация о клиенте) и подчиненная (элементы заказа).

1.      Подобно помощнику простого отчета, первый шаг это выбор DataView. Только в данном случае DataView должен относиться к главной таблице.

2.      в шаге два, выбор подчиненной (Detail) таблицы. Заметим, что DataView выбранный в первом шаге, больше не доступен, это сделано для уменьшения ошибок. Подобно помощнику простого отчета, в следующем шаге выбираются поля и порядок для обеих таблиц.

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

После этого, оставшиеся шаги идентичны помощнику простого отчета.

После того, как все завершено, нажмите Generate, что создаст отчет, снова, можно после этого подстроить отчет под свои нужды. Рисунок, показанный ниже, показывает результат работы помощника.

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

Заметим, что диалог разделен на четыре группы: поля базы (Data Fields), переменные отчета (Report Variables), параметры проекта (Project Parameters), PIV переменные (Post Initialize Variables) и Data Text. Data Text это окно результата. Посмотрите это окно, вставляя различные переменные. Две кнопки с правой стороны окна это «+» и «&». Плюс добавляет два значения без пробелов, а амперсанд объединяет их с одним пробелом. Первым шагом, это решить, что использовать плюс или амперсанд, затем выбрать текст в одной из трех групп, выше окна Data Text.

Для примера, для добавления поля OrderNo к CustNo, нажмите на кнопку «+», перейдите в группу DataField, разверните список DataField, и выберите OrderNo. Затем нажмите на кнопку «Insert Field» и увидите, что это добавилось в окно DataText. Результат в окне DataText должен быть «CustNo + OrderNumber». Можно добавить еще несколько полей из списка DataField. Заметим элемент «Selected» в группе представления DataView. Если здесь больше одного представления DataView активно, то выберите другое представление DataView, и снова добавьте поле из другого представления.

Но ничто не заставляет думать об объединении только полей DataFields. Переменные отчета «Report Variables» и параметры проекта «Project Parameters» тоже могут быть объединены. Перейдите в группу "Report Variables", откройте список переменных и обратите внимание, какие доступны.

Другой доступный элемент это параметры проекта. Это должны быть параметры «UserName», «ReportTitle» или «UserOption», инициализированные приложением. Для создания списка параметров проекта «Project Parameters», выберите узел Project в дереве проекта (самый верхний элемент). В панели свойств должно быть свойство «Parameters». Нажмите на кнопку эллипса, буден вызван типичный текстовый редактор строк, где  Вы можете ввести различные параметры, которые передаются в Rave из приложения, подобно «UserName».

 

Задание к лабораторной работе:

1.      Необходимо создать простой отчет и отчет «главный – детальный» для своей базы данных.

2.      Продемонстрировать использование двух способов соединения с источником данных (соединение через драйвер Rave Reports и соединение через компонент Rave Reports и компонент набора данных в приложении Delphi).

3.      Продемонстрировать использование основных компонентов визуальной среды Rave Reports.

4.      Продемонстрировать использование компонентов управления отчетами вкладки Rave среды Delphi.

 

Контрольные вопросы:

  1. Что такое Rave Reports?
  2. Опишите структуру Rave Reports.
  3. Представьте алгоритм разработки и использования отчетов.
  4. Способы открытия визуального редактора Rave Reports.
  5. Перечислите задачи, которые позволяет решать визуальная среда Rave Reports.
  6. Каковы основные закладки палитры инструментов? Для чего они предназначены?
  7. Что представляет собой закладка Page Designer?
  8. Что представляет собой закладка Event Editor?
  9. Какие 3 ветви включает в себя проект Rave Reports?
  10. Что такое библиотека отчетов?
  11. Что такое каталог глобальных страниц?
  12. Что такое словарь просмотров данных?
  13. Опишите основные элементы для представления текста и изображений (закладка Standard).
  14. Каким образом производится обработка событий?
  15. Как устанавливается соединение с внешним источником? Этапы подключения к внешнему источнику данных.
  16. С помощью чего можно обеспечить безопасность доступа к данным?
  17. Как производится отображение данных в отчете? Функциональные группы.
  18. Перечислите основные компоненты закладки Rave и их назначение.
  19. Перечислите типы соединений с источником данных и наборы данных, открываемые через компоненты доступа к данным Delphi.
  20. Перечислите компоненты для создания соединения с источниками данных в приложении.
  21. Для чего служат помощники (Wizards)? Каких типов они бывают?

Реклама от TUT.SU »