Генератор отчетов ReportSmith

        Содержание
        Краткий Обзор

Важной составной частью приложения является вывод данных на печать - получение отчета. В пакет Delphi входит средство для генерации и печати отчетов - ReportSmith. Вы можете объединить отчет с приложениями Delphi. Также, библиотека визуальных компонент Delphi включает специальный компонент TReport. В данном уроке показано, как использовать компоненту TRepor и рассмотрены основные принципы проектирования отчетов в ReportSmith.

        ReportSmith
Borland ReportSmith является инструментом для получения отчетов и интегрирован в среду Delphi. Он может быть вызван непосредственно из меню Tools. Отчет может быть добавлен к приложениям Delphi, для этого есть компонента TReport на странице Data Access Палитры Компонентов. Войти в ReportSmith можно, нажав правую кнопка мыши на компоненте TReport и выбрав пункт контекстного меню (p

Отчеты могут быть созданы для SQL БД или локальных БД и не требуют знания сложных команд БД. Интерфейс ReportSmith использует стандартные инструменты Windows 3.1 типа tool bar, formatting ribbon, и “drag and drop”. Если пользователь уже знаком с интерфейсом стандартных Windows-программ, типа Word for Windows или Quattro Pro for Windows, ему будет “знаком” и интерфейс ReportSmith. ReportSmith предлагает 4 типа отчетов: Табличный, Кросс-таблица(CrossTab), Форма(Form) и Наклейка(Label).

ReportSmith использует концепцию “живых данных”, т.е. работа происходит с настоящими данными все время, а не только тогда, когда запускается просмотр (preview). Кроме этого, ReportSmith легко работает с чрезвычайно большими БД при помощи адаптивной технологии управления памятью. В ReportSmith можно управлять тем, где сохраняется результат выборки данных из БД: в локальный памяти клиентской PC, на жестком диске клиентской PC, или на сервере.

 

Repor

 

Отчеты, созданные с помощью ReportSmith могут распространяться бесплатно вместе с ReportSmith runtime-модулем. Конечные пользователи могут купить полную версию ReportSmith, для того чтобы создать свои собственные отчеты. Информация о ReportSmith доступна в руководстве ReportSmith for Windows - Creating Reports из коробки Delphi.

      1. Компонент TReport

Библиотека визуальных компонент Delphi включает объект TReport. TReport обеспечивает вызов из программы Delphi программы ReportSmith runtime и печати отчета. TReport расположен на странице Data Access Палитры Компонент.

      1. Добавление TReport в приложение

Добавить отчет в приложение Delphi очень легко. Положите компонент TReport на форму. Инспектор Объектов Delphi показывает, что компонент TReport имеет несколько свойств и ни одного события.

 

Рис.1: Инспектор объектов для свойств TReport

      1. Свойства TReport

У TReport есть следующие свойства:

 

AutoUnload  

EndPage  

InitialValues  

MaxRecords  

PrintCopies  

ReportDir  

ReportName  

StartPage

      1. Методы TReport

Методы TReport включают:

 

CloseReport  

CloseApplication  

Connect  

Print  

RecalcReport  

Run  

RunMacro -  

SetVariable

        Передача переменной в отчет

Следующий код показывает, как передать переменную в отчет. В примере строковой переменной отчета 'City' присваивается значение 'Bombey'. Подразумевается, что есть готовый отчет с данной переменной.

Поместите компонент TReport на форму и установите требуемые свойства для вызова печати отчета. Напишите обработчик OnClick для кнопки Button1 на форме (кнопка - для простоты) :

procedure TForm1.Button1Click(Sender: TObject);

begin

Report1.InitialValues.Clear;

Report1.InitialValues.Add('@City=<Bombey>');

Report1.Run;

end;

 

        Пример использования Delphi + ReportSmith

Завершенное приложение Delphi + ReportSmith есть в примерах к данному уроку. Приложение позволяет выбрать имя отчета в диалоге открытия файлов и выполнить этот отчет. Код для кнопки PrintReport (Печатать отчета) показан ниже.

 

procedure TForm1.PrintReportClick(Sender: TObject);

begin

if OpenDialog1.Execute then begin

Report1.ReportName := OpenDialog1.Filename;

Report1.Run

end

end;

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

В данной главе показан пример построения достаточно простого отчета на основе данных из таблиц, которые находятся в каталоге \DELPHI\DEMOS\DATA. В отчете для каждого заказчика будет выводиться список его заказов с сортировкой по имени заказчика. Для этого потребуется использовать таблицы ORDERS.DB (заказы) и CUSTOMER.DB (заказчики).

Запустите ReportSmith. Он попросит вас открыть отчет (если отчет уже существует, то можно выбрать имя отчета). Чтобы построить новый отчет, нажмите кнопку Cancel и затем в меню ReportSmith выберите пункт File|New. ReportSmith попросит выбрать тип отчета, который вы хотите построить (см. рис.2). В нашем примере мы будем строить табличный отчет (Columnar report).

 

Рис.2: Диалог выбора типа отчета

Если данных в таблицах много, то лучше выбрать режим Draft прежде, чем нажать OK. В этом случае ReportSmith спросит, сколько записей вы хотите использовать при построении отчета. Когда отчет запускается на выполнение, то будут использоваться все записи или то число, которое вы определяете в свойстве MaxRecords.

После выбора типа отчета укажите ReportSmith таблицу(ы), по которым вы хотите сделать отчет (см. рис.3).

 

Рис. 3: Диалог добавления таблиц в отчет.

Для добавления таблицы в отчет нажмите кнопку "Add table...", выберите тип таблицы Paradox (IDAPI) (см. рис.4), и выберите таблицу CUSTOMER.DB из каталога \DEMOS. Точно также добавьте таблицу ORDERS.DB. Следующим шагом нужно установить условия, по которым будет выполняться соединение таблиц при выполнении отчета. В данном случае они связаны по полю CustNo - код заказчика. Установки связи между таблицами происходит в соответствующем диалоге при нажатии кнопки “Add new link…” (см. рис.5). Предварительный этап закончен и можно нажать кнопку “Done”.

 

Рис. 4: Диалог добавления таблицы в отчет

 

Рис. 5: Определение связи между таблицами

 

ReportSmith считает данные из таблиц и создаст начальный табличный отчет. В нашем отчете слишком большое количество столбцов и он не умещается по ширине на стандартной странице. Можно убрать ненужные колонки, выбирая столбец и нажимая клавишу Del. Удалите все столбцы кроме OrderNo, SaleDate, ShipDate, paymentMethod, AmountPaid. ReportSmith позволяет изменить ширину колонки с помощью мыши. Теперь отчет выглядит примерно так, как на рис.6.

 

Рис. 6: Отчет с выбранными полями

Однако, пока это не то, что нам нужно - в отчете нет информации о заказчике, для которого данный заказ предназначен. Прежде, чем добавить эту информацию нужно сгруппировать записи в отчете по принадлежности заказчику. Это делается в пункте меню Tools|Report Grouping… (см. рис.7). Просто выберите поле  

Рис. 7: Диалог группировки записей в отчете

 

Рис. 8: Добавление Header/Footer для группы

 

В дальнейшем, в Header для группы мы поместим информацию о заказчике, а в Footer - итоговую сумму всех заказов (т.е. сумму по полю AmountPaid для данной группы). А теперь наш отчет имеет вид, представленный на рис.9. (Для того, чтобы показывались названия полей в каждой группе нужно вызвать пункт  

Рис. 9: Отчет с группами записей и полями перед и после них

 

Для того чтобы добавить данные в Header нужно выбрать пункт меню Insert|Field. Появится соответствующий диалог (см. рис.10). В этом диалоге требуется указать поле, которое вы хотите вставить в отчет, нажать кнопку “Insert” и щелкнуть мышью в то место на отчете, куда его нужно поместить. В нашем отчете это будет поле Company и размещаться оно будет в заголовке группы

Рис. 10: Диалог добавления поля в отчет

 

Теперь добавим суммирующее поле в Footer для группы. Для этого выберите пункт меню Tools|Summary Fields… В диалоге нужно выбрать группу CustNo_Group, поле AmountPaid, операцию Sum и нажать “Add To Group”(см. рис.11). Далее, по аналогии с полем Company, добавьте суммирующее поле в Footer группы (в диалоге вставки поля пункта меню, рис.10, в верхнем ComboBox’е нужно выбрать S Отчет готов, его вид показан на рис.12.

Рис. 11: Диалог определения полей суммирования

Рис. 12: Готовый отчет.

 

 

 

к оглавлению