Как в делфи сделать поиск по базе данных в

Вопрос рассмотрения работы с базами данных в Delphi был бы не полным, если не рассмотреть работу с отчетами. Отчеты представляют собой печатные документы, получаемые в результате выполнения запросов к БД. А распечатка всевозможных бумажных документов - одно из основных предназначений приложений БД.

Отчеты в Delphi

Для упрощения процесса составления отчетов в поставку всех версий Delphi входят специальные программные средства - генераторы как в делфи сделать поиск по базе данных в отчетов. В первых версиях Delphi это был ReportSmith, затем, с Delphi 3 по Delphi 6 - QuickReport, а начиная с Delphi 7 и заканчивая Delphi 2006 - Rave Reports.

ПРИМЕЧАНИЕ
В поставку Delphi 7 так же входит и QuickReport, однако по умолчанию этот инструментарий отсутствует на панели компонентов. Чтобы воспользоваться QuickReport в этой версии Delphi, следует открыть Component ' Install Packages, нажать кнопку Add и выбрать файл dclqrt70.bpl в подкаталоге …Delphi\Bin.

Генераторы ReportSmith и Rave Reports представляют собой отдельные приложения, при помощи которых можно создавать отчеты, в то время, как QuickReports - это набор VCL-компонентов, которые помещают непосредственно на стандартную форму Delphi.

В простейшем случае работа с QuickReport выглядит следующим образом: создается новая форма, на которую помещают компонент QuickRep. Затем при помощи составного свойства Bands определяют, какие основные составные части отчета требуются:

  • HasColumnHeader - заголовки столбцов;
  • HasDetail - сами столбцы (собственно данные);
  • HasPageFooter - нижний колонтитул страницы;
  • HasPageHeader - верхний колонтитул страницы;
  • HasSummary - итоговое значение по столбцам данных;
  • HasTitle - общий заголовок отчета.

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

Рассмотрим простейшее приложение, использующее отчет. Для этого создадим новый проект в Delphi (если у вас Delphi 7, то сначала подключите QuickReport, как описано в примечании, если же у вас более новая версия - то можете пропустить этот текст и сразу перейти к следующему параграфу). Затем на главную форму поместите 3 кнопки - "Просмотр", "Печать" и "Выход", а в заголовке окна (Caption) напишите "QuickReport demo" (рис. 22.1).

Приложение QuickReport demo на Delphi
Рис. 22.1. Приложение QuickReport demo

Теперь создадим новую форму, поместим на нее компонент Table, установим свойство DatabaseName в DATA1, а для TableName выберем Customer, после чего установим свойство Active в истину. Таким образом, мы подготовили данные для вывода. Теперь поместим на форму компонент QuickRep, который визуально предствляет собой лист отчета и установим в свойстве Bands флаги HasColumnHeader, HasDetail, HasPageFooter и HasTitle. В результате на "листе" появятся 4 области, представляющие собой соответствующие логические части отчета. Теперь в центре самой верхней области - Title - поместим компонент QRLabel. Это аналог стандартной подписи (Label), предназначенный специально для отчетов QuickReport. В свойстве Caption напишем "Клиенты", после чего можно увеличить размер шрифта, сделать его полужирным или выбрать другую гарнитуру, чтобы заголовок не "затерялся".

Следующим этапом будет собственно подготовка к выводу данных отчета. Поскольку мы выбрали таблицу клиентов, то выводить будем 2 колонки - номер клиента в базе (поле CUST_ID) и иго имя (CUST_NAME). Для этого сначала на области заголовков столбцов (Column Header) разместим еще 2 надписи, воспользовавшись QRLabel, в свойстве Caption которых напишем "№" и "Имя". В следующей области, Detail, непосредственно под этими надписями, поместим 2 компонента QRDBText. Эти компоненты, в свою очередь, можно назвать аналогами компонент DBText, предназначенных для вывода данных из БД в строковом формате. Свойство DataSet компонентов QRDBText следует установить в Table1, а DataField - в CUST_ID у одного и в CUST_NAME - у другого. Здесь надо отметить, что компоненты, помещенные в области Detail, при печати будут повторяться построчно столько раз, сколько требуется для вывода всех данных из указанного источника. Но следует учитывать, что и у компонентов, используемых для вывода полей, и у основы отчета - компонента QuickRep, должен использоваться один и тот же источник данных. В данном случае это Table1.

Последнее, что остается - это определить содержимое нижнего колонтитула. Для этого в области Page Footer поместим компонент QRSysData. Прямого аналога в VCL у этого компонента нет, можно назвать его "продвинутой" версией текстовой подписи, которая может менять свое содержимое в зависимости от состояния отчета. За тип выводимой информации отвечает свойство Data, которое может принимать одно из следующих значений: qrsDare, qrsDateTime, qrsDetailCount, qrsDetailNo, qrsPageNumber, qrsReportTitle и qrsTime. Соответственно, будет выводиться текущая дата, дата и время, количество записей поиск на странице, номер последней записи на странице, номер страницы, название отчета, или текущее время. Поскольку записей в таблице у нас весьма немного, то остановимся на втором варианте - выводе даты и времени составления отчета. Впрочем, при необходимости всегда можно использовать несколько таких компонентов, чтобы вывести всю необходимую информацию.

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

Форма Delphi с отчетом QuickReport
Рис. 22.2. Форма Delphi с отчетом QuickReport

Теперь остается написать код для обращения к этому отчету. Для этого вернемся к первой (главной) форме приложения, в начале секции implementation подключим форму с запросом при помощи ключевого слова uses и создадим обработчики событий для кнопок, как показано в листинге 22.1.

Листинг 22.1. Исходный код приложения QuickReport demo

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, QRCtrls, QuickRpt, ExtCtrls, DB, DBTables; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); end; var Form1: TForm1; implementation uses unit2; {$R.dfm} procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); begin Form2.QuickRep1.Preview; end; procedure TForm1.Button2Click(Sender: TObject); begin Form2.QuickRep1.Print; end; end.

Как видно из кода, вся программная работа заключается в вызове метода Preview для просмотра отчета и метода Print для вывода на печать. С исходным кодом так же можно ознакомится в каталоге Demo\Part4\QReport.

Основы Rave Reports

Начиная с Delphi 7, фирма Borland вернулась к идее использования отдельного приложения для создания отчетов. На сей раз, вместо генератора ReportSmith, было использовано другое приложение - Rave Reports. Одним из ключевых преимуществ этого генератора отчетов является то, что его ядро можно включить в состав собственного приложения. Таким образом, не требуется явно устанавливать библиотеки Rave Reports на все ПК, на которых будет выполняться разрабатываемое вами приложение БД.

В зависимости от того, какая версия Delphi у вас установлена - 7.0, 2005 или 2006, в вашем распоряжении окажется Rave Reports версии 5.0, 6.0 или 6.5. Существенных различий между ними нет, поэтому мы будем рассматривать версию 5.0. При необходимости, Rave Reports можно использовать и с более ранними версиями Delphi, а так же с рядом других IDE.

Что касается самого генератора Rave Reports, то он состоит из 3 частей:

  • Ядра, которое обеспечивает управление отчетом, его предварительный просмотр и отправку на печать. Исполняемый код ядра включается в приложение Delphi при компиляции, делая его полностью автономным при работе на компьютере клиента;
  • Визуальная среда разработки отчетов, предназначенная для разработки самих отчетов. Она позволяет добавлять к отчету страницы, размешать на них графические и текстовые элементы, подключать к отчетам источники данных и т.д. Отчеты сохраняются в файлах с расширением RAV и должны распространяться вместе с использующими их приложениями;
  • Компоненты Rave Reports, обеспечивающие управление отчетами из приложения. Они расположенные на странице Rave палитры компонентов.

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

Среда Rave Reports

Вызвать визуальный конструктор Rave Reports можно из меню Delphi, выбрав пункт Tools'Rave Designer. В результате запустится приложение - среда разработки отчетов Rave Reports (рис. 22.3).

Вид окна IDE Rave Reports 5.0
Рис. 22.3. Вид окна IDE Rave Reports 5.0

Интерфейс визуального конструктора отчетов вполне стандартен для Windows-приложений и напоминает интерфейс самой среды Delphi. В самом верху расположено меню, а под ним - панели инструментов. Слева расположены 2 панели, дублирующие наиболее востребованные команды программы. Справа располагается многостраничная панель инструментов, подобная палитре компонентов в Delphi, на ней находятся компоненты, при помощи которых и создаются отчеты.

Ниже расположена основная часть окна, разделенная на 3 части. Так, слева расположен инспектор компонентов отчета, при помощи которого настраиваются свойства выбранного компонента, подобно тому, как это осуществляется в инспекторе объекта в IDE Delphi.

В центральной части окна визуального конструктора располагается блокнот с 2 вкладками - Page Designer (конструктор страниц) и Event Editor (редактор событий). На вкладке конструктора страниц можно добавлять, удалять и редактировать компоненты отчета. При этом, поскольку отчеты могут быть многостраничными, то эта вкладка, в свою очередь, так же является блокнотом, каждый лист которого представляет собой страницу отчета. Что касается вкладки редактора событий, то на ней, при необходимости, определяют обработчики событий для отчетов и их составных частей - страниц, элементов оформления и т.д.

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

Само дерево состоит из 3 "ветвей":

  • Report Library - библиотека отчетов, содержащая все отчеты проекта вместе со всеми их составляющими - страницами, элементами оформления и т.д., упорядоченные в иерархической структуре;
  • Global Page Catalog - каталог глобальных страниц, содержащий страницы, общие для всех отчетов проекта;;
  • Data View Dictionary - словарь просмотров данных, содержащий объекты соединения с данными из внешних источников.

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

Чтобы добавить новый отчет к проекту с помощью команды New Report из меню File, а новая страница в отчете добавляется при помощи команды New Report Page из этого же меню. Сразу после создания объект незамедлительно появляется в соответствующей ветви дерева проекта.

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

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

Редактор страниц отчета Rave Reports
Рис. 22.4. Редактор страниц отчета

Все доступные страницы отчета находятся в 2 списках. В первом (Report Pages) доступны все страницы текущего отчета, а во втором (Global Pages) - все глобальные страницы проекта. При нажатии кнопок Add Page и Add Global страницы попадают в список Page List. Уже после внесения в список можно менять порядок вывода страниц, а так же удалять их из этого списка при помощи кнопок, расположенных слева.

Создания объекта данных в Rave Reports - выбор типа источника
Рис. 22.5. Создания объекта данных - выбор типа источника

Наконец, новый источник данных создается при помощи команды New Data Object. При этом открывается диалоговое окно Data Connections (рис. 22.5), в котором следует выбрать один из 5 предлагаемых типов объектов:

  • Data Lookup Security Controller - контроллер безопасности поиска данных, обеспечивающий авторизацию пользователей по имени и паролю;
  • Database Connection - соединение с БД, устанавливает соединение с внешним источником данных;
  • Direct Data View - прямой просмотр данных, создает просмотр данных для активного соединения с источником данных;
  • Driver Data View - просмотр данных через драйвер, создает просмотр данных на основе уже имеющегося соединения;
  • Simple Security Controller - простой контроллер безопасности, определяет список пользователей для организации доступа.

После выбора типа, если выбран вариант соединения с базой данных, будет предложено определиться с типом источника - BDE, ADO или dbExpress (DBX), а затем, в зависимости от выбранного варианта, будет предложено либо указать псевдоним БД в BDE, либо определить параметры соединения.

ПРИМЕЧАНИЕ
В Rave Reports 6.x имеется так же поддержка источников данных IBX - Interbase Express. Так же можно отметить, что версии 6 и 6.5 выгодно отличаются от более ранних наличием полноценной справочной системы.

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

Компоненты Rave Reports для создания отчетов

Для создания и оформления отчетов в среде Rave Reports имеется многостраничная панель инструментов, имеющая 10 вкладок:

  • Drawing - графические компоненты для оформления отчета;
  • Bar Code - компоненты для вывода различных вариантов штрихкода;
  • Standard - компоненты для отображения текста и графики;
  • Report - компоненты для отображения данных;
  • Zoom - компоненты для изменения масштаба отображения при разработке отчета;
  • Colors - компоненты для выбора цвета графических элементов оформления;
  • Lines - компоненты для определения толщины и стиля линий графических элементов оформления;
  • Fills - компоненты для определения типа заливки элементов оформления;
  • Fonts - компоненты для определения параметров текста;
  • Alignment - компоненты для выравнивания элементов отчета на странице.

По сути, именно компонентами являются только те элементы, что расположены на первых 4 вкладках - Drawing, Bar Code, Standard и Report. При этом компоненты, расположенные во вкладках Drawing, Bar Code и Standard используются для визуального оформления и вывода статичной информации, в то время как собственно за вывод данных отвечают компоненты, расположенные на вкладке Report. Названия и описания всех компонентов, предназначенных для оформления отчетов, сведены в таблице 22.1.

Таблица 22.1. Компоненты для оформления отчетов в Rave Reports Компонент Вкладка Описание Line, Hline, Vline Drawing Компоненты для рисования универсальной, горизонтальной и вертикальной линии. Разница между универсальной линией и остальными заключается в том, что ее можно «повернуть» при помощи мышки, а другие – только путем редактирования свойства Height в инспекторе компонентов отчета Rectangle, Square Drawing Компоненты для вывода прямоугольника и квадрата Circle, Ellipse Drawing Компоненты для вывода окружности и эллипса PostNetBarCode Bar Code Компонент для вывода штрихкода в формате PostNet, который применяется в почтовой службе США I2of5BarCode Bar Code Компонент для вывода штрихкода в формате I2of5, предназначенного для вывода цифровых последовательностей Code39BarCode Bar Code Компонент для вывода штрихкода в формате Code39, кодирующего цифры и заглавные латинские буквы, а так же некоторые иные символы Code128BarCode Bar Code Компонент для вывода штрихкода в формате Code128, при помощи которого можно представить первую половину символов таблицы ASCII UPCBarCode Bar Code Компонент для вывода штрихкода в формате UPC, служащего для маркировки товаров 12-ю цифрами EANBarCode Bar Code Компонент для вывода штрихкода в формате EAN, служащего для маркировки товаров 13-ю цифрами Text Standard Компонент для вывода однострочного текста. Сам текст задается при помощи свойства Text путем его редактирования в инспекторе компонентов отчета Memo Standard Компонент для вывода многострочного текста. Сам текст задается при помощи свойства Text Section Standard Непечатный компонент, предназначенный для группировки нескольких компонентов Bitmap Standard Компонент для отображения растровых изображений в формате BMP. Само изображение задается при помощи свойства Image MetaFile Standard Компонент для отображения векторных изображений в форматах EMF и WMF. Само изображение задается при помощи свойства Image FontMaster Standard Непечатный компонент, предназначенный для определения свойств шрифта для компонентов отчета, связанных с данным элементом при помощи свойства FontMirror PageNumInit Standard Непечатный компонент, предназначенный для переопределения нумерации страниц начиная с той страницы отчета, на которой он расположен

Компоненты для вывода данных, в свою очередь, подразделяются на следующие группы: компоненты отображения данных, обеспечивающие вывод данных из источника; структурные компоненты, предназначенные для группировки; компоненты вычислений, предназначенные для произведения математических операций над выводимыми в отчете данными. Все они приведены в таблице 22.2.

Таблица 22.2. Компоненты вывода данных в Rave Reports Компонент Группа Описание DataText Отображение Используется для вывода строковых и числовых значений из связанного с ним источника (просмотра) данных DataMemo Отображение Используется для вывода данных в формате Memo или BLOB CalcText Отображение Используется для вывода результатов вычислений по связанным полям DataMirrorSection Отображение Аналог компонента Section, предназначенный для компонентов вывода данных Region Структура Используется для определения области (части страницы), на которой располагаются другие компоненты вывода данных. При необходимости можно разбить область на колонки при помощи свойства Columns Band Структура Используется для определения полосы, на которой располагаются компоненты оформления отчета. Компонент Band может размещаться только на компоненте Region DataBand Структура Используется для выделения полосы, на которой располагаются компоненты вывода данных. Компонент DataBand может размещаться только на компоненте Region DataCycle, CalcOp, CalcTotal, CalcController Вычисления Группа непечатных компонентов, используемых для вычисления данных на основе информации, доступной из источников (просмотров) данных

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

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

Компоненты Rave Reports в VCL

Для взаимодействия с приложениями, создаваемыми в Delphi, вместе с Rave Reports поставляется набор VCL-компонент. В Delphi 7 и более поздних версиях они установлены по умолчанию и находятся на вкладке Rave палитры компонентов Delphi.

Все компоненты Rave можно условно разделить на 4 категории - для управления проектом, для организации соединений с данными, для вывода на печать или на экран, а так же для экспорта в какой-либо формат. Всего же их насчитывается 13:

  • RvProject - ключевой компонент, используемый для взаимодействия между отчетом Rave и приложением Delphi;
  • RvSystem - компонент, обеспечивающий взаимодействие между отчетом и функциями по печати и просмотру отчета. Фактически, RvSystem является интегрированной версией RvNDRWriter, RvRenderPreview и RvRenderPrinter;
  • RvCustomConnection - обеспечивает соединение с источником данных типа текстового файла, таблицы Excel и т.п.;
  • RvDataSetConnection - обеспечивает соединение с набором данных СУБД;
  • RvTableConnection - обеспечивает соединение с компонентом типа Table;
  • RvQueryConnection - обеспечивает соединение с компонентом типа Query;
  • RvNDRWriter - компонент для подготовки отчета в специальном двоичном формате для дальнейшего вывода на принтер или для просмотра на экране;
  • RvRenderPreview - компонент, обеспечивающий вывод отчета на экран;
  • RvRenderPrinter - компонент, обеспечивающий вывод отчета на печать;
  • RvRenderPDF, RvRenderHTML, RvRenderRTF, RvRenderText - группа компонентов, обеспечивающих экспорт отчета в форматы PDF, HTML, RTF или в текстовый файл.

Наиболее важным для построения отчета компонентом, безусловно, является компонент RvProject, поскольку без его участия невозможно взаимодействие приложения с отчетами Rave Reports. Связь с проектом отчета осуществляется при помощи свойства Project File, которому присваивается имя RAV-файла с проектом отчета:

RvProject1.ProjectFile:='c:\project1.rav';

Поскольку в одном проекте Rave Reports может находиться несколько отчетов, то для выбора нужного отчета используется свойства ReportName, ReportFillName и ReportDesc, позволяющие сослаться на нужный отчет по его короткому или полному имени, или по описанию. Чтобы получить список всех отчетов проекта, можно прибегнуть к процедуре GetReportList, которая возвращает список всех отчетов проекта. При этом в качестве первого параметра, передаваемого этой процедуре, должен быть передан объект типа TStrings, а в качестве второго - булево значение, в зависимости от которого список будет заполнен либо сокращенными, либо полными названиями отчетов.

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

Компоненты RvCustomConnection, RvDataSetConnection, RvTableConnection и RvQueryConnection предназначены для предоставления отчету источников данных из приложения Delphi. Именно эти компоненты будут отображаться при разработке отчета в среде Rave Reports, если при создании объекта данных (New Data Object) выбрать вариант прямого просмотра данных (Direct Data View). Разумеется, при этом должна быть запущена среда Delphi с загруженным приложением, содержащим подобные компоненты.

Пример создания отчета

Рассмотрим пример создания простейшего отчета с использованием Rave Reports. Пусть он будет выводить ту же самую таблицу и примерно в таком же виде, как и рассмотренный в начале этой главы отчет, созданный на базе VCL-компонентов QuickReport.

Для начала нам потребуется главная форма приложения, подобная той, что была использована в примере с QuickReport (см. рис. 22.1). Этой формой и ограничимся, поскольку в данном случае форма отчета создается не средствами VCL-компонент в IDE Delphi, а в специализированной среде Rave Reports. Поэтому единственный компонент доступа к данным - Table - мы так же поместим на этой форме. При этом, как и в предыдущем случае, установим свойство DatabaseName в DATA1, TableName - в customer, а Active - в истину.

Теперь перейдем к компонентам, расположенным на закладке Rave. Из них нам понадобятся RvProject - основной компонент отчета, RvSystem - для генерации отчетов и вывода их на принтер или в окно просмотра, а так же RvDataSetConnection - для взаимодействия с источником данных, т.е. с компонентом Table. Соответственно, следует связать компонент RvDataSetConnection с Table, установив у него в свойстве DataSet значение Table1. Что касается компонента RvProject, то его следует связать с компонентом RvSystem, для чего в свойстве Engine следует установить значение RvSystem1.

После этого можно приступить собственно к проектированию отчета, для чего нам понадобится загрузить среду Rave Reports. Сделать это можно как из меню Tools, так и при помощи двойного щелчка мышкой по компоненту RvProject.

В среде Rave Reports следует начать новый проект, выбрав пункт New из меню File. При этом автоматически создастся новый проект, уже содержащий пустой одностраничный отчет. Для начала подготовим заголовок страницы отчета, для чего вверху страницы, по центру, расположим текстовую надпись (компонент Text расположен на вкладке Standard), в свойстве Text которой, при помощи инспектора компонентов, укажем значение "Клиенты". Чтобы выделить эту надпись шрифтом, можно перейти на закладку Fonts и настроить вид надписи при помощи имеющихся на ней элементов управления. Затем наметим заголовки столбцов, для чего несколько ниже основного заголовка разместим еще 2 компонента Text, один из которых будет являться заголовкам для колонки с номерами клиентов в базе, а другой - для имен.

Таким образом, можно приступать к подготовке к выводу собственно данных. Но, прежде всего, нам потребуется определить источник данных, для чего следует создать объект данных (File ' New Data Object). В окне диалога Data Connections следует выбрать вариант Direct Data View и нажать на кнопку Next, после чего появится второй экран этого диалога со списком доступных соединений. Впрочем, в данном случае, список будет состоять всего из 1 элемента - RvDataSetConnection1, который мы и выберем. После нажатия на кнопку Finish, новый источник данных появится в дереве проекта под именем DataView1.

После всей проделанной подготовительной работы займемся выводом данных, для чего нам понадобятся компоненты отчета, расположенные на закладке Report. Прежде всего, поместим на лист компонент Region и при помощи мышки растянем его таким образом, чтобы он занял практически все свободное место на листе, поскольку именно размеры этого компонента определяют область, в которую будут выводиться данные. Затем, непосредственно на этот компонент, поместим другой - DataBand. На компонент DataBand, в свою очередь, поместим 2 компонента DataText, выровняв их по левому краю с заголовками столбцов (рис. 22.6).

Разработанный отчет в среде Rave Reports
Рис. 22.6. Разработанный отчет в среде Rave Reports

Теперь остается связать Data-компоненты с источником данных, для чего как для компонента DataBand, так и для обоих компонентов DataText следует установить свойство DataView в DataView1. Для компонентов DataText помимо этого следует выбрать еще и поля, которые они будут выводить, что определяется при помощи свойства DataField. Соответственно для левого компонента это будет CUST_ID, а для правого - CUST_NAME.

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

Прежде всего, нам следует указать имя файла проекта в свойстве ProjectFile компонента RvProject. В том случае, если проект был сохранен в том же каталоге, что и это приложение, то достаточно просто ввести имя файла. В противном случае потребуется указать полный путь, для чего можно нажать кнопку с многоточием напротив этого поля в инспекторе объектов и воспользоваться стандартным диалогом открытия файла. Кроме того, поскольку с одной стороны, при выполнении запроса на вывод отчета компонент RvSystem запрашивает, куда его выводить, а с другой у нас и так имеется 2 отдельных кнопки - для вывода на экран и на принтер, то в свойстве SystemSetups этого компонента следует выключить флаг ssAllowSetup.

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

RvSystem1.DefaultDest:=rdPreview; RvProject1.Execute;

Здесь в первой строке указывается, что вывод следует производить в окно просмотра на экран монитора, а во второй обеспечивается сам вывод. Для вывода же на печать следует лишь изменить значение, назначаемое свойств DefaultDest с rdPreview на rdPrinter:

RvSystem1.DefaultDest:=rdPrinter; RvProject1.Execute;

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

RvProject1.SelectReport('Report1',true);

Кроме того, не было бы лишним явно загрузить отчет, для чего можно воспользоваться методом Open:

RvProject1.Open;

В результате, мы получим код, приведенный в листинге 22.2.

Листинг 22.2. Код приложения Rave Reports demo

procedure TForm1.FormCreate(Sender: TObject); begin RvProject1.SelectReport('Report1',true); RvProject1.Open; end; procedure TForm1.Button1Click(Sender: TObject); begin RvSystem1.DefaultDest:=rdPreview; RvProject1.Execute; end; procedure TForm1.Button2Click(Sender: TObject); begin RvSystem1.DefaultDest:=rdPrinter; RvProject1.Execute; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end;

С самим приложением можно ознакомиться в каталоге Demo\Part4\RReport.


Источник: http://www.snkey.net/books/delphi/ch4-6.html

Закрыть ... [X]

Поиск по базе - БД в Delphi - Форум программистов Каркасные бассейны для дачи своими руками фото

Как в делфи сделать поиск по базе данных в Поиск и фильтрация данных в Delphi. Delphi, Базы
Как в делфи сделать поиск по базе данных в Базы данных на Delphi - Технический форум
Как в делфи сделать поиск по базе данных в Создание простой базы данных на Delphi7
Как в делфи сделать поиск по базе данных в Поиск в базе данных ADO - Delphi Sources FAQ
Как в делфи сделать поиск по базе данных в Word Разорвать и соединить таблицу - fo
Как в делфи сделать поиск по базе данных в Банты на 1 сентября из атласной ленты своими руками, мастер
Как в делфи сделать поиск по базе данных в Брошь из атласной ленты своими руками - Поиск в Google
Брошь-галстук из репсовых лент DIY. Как сделать брошь - Pinterest Идеальная модная прическа для выпускного вечера Как пристроить веранду к дому своими руками (фото) Как сделать диван своими руками-Делай сам! Как сделать собственное электроснабжение в частном доме Корейские прически для девушек - Все о волосах и уходе за ними