Шаблоны отчётов Rtf
AKReport

содержание
 

Оглавление страницы:

Общие положения

Пример "Demo3"

Отчеты со связями "мастер-деталь"

Пример "Demo1"

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

Пример "Demo5"

 

Шаблон документа в формате "RTF" представляет собой набор параметров обрамленных открывающим и закрывающим тегами банда.

Параметры и теги заключаются между символами "~".

Оформление банда:

~Begin имягруппы~

... содержимое группы ...

~End имягруппы~

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

Содержимое банда повторяется для каждой записи (строки) из набора данных группы имягруппы определенной в "xrp" документе. Для отображения информации в бандах используются параметры, имена которх совпадают с именами палей, описанных в группе имягруппы в "xrp" документе. Параметры внутри банда по умолчанию ссылаются на одноименные поля соответствующей группы, если надо получить значение поля из другой группы, то ссылку следует задать явно: "~имягруппы.имяполя~". К параметрам определенным в "xrp" можно обращаться по имени: "~имяпараметра~", "~имя параметра_KEY~" или "имя параметра_имяполя~" - в зависимости от требуемых данных и типа параметра.

 

Пример "Demo3"

"RTF" шаблон.

Список работников отделов.
~Departments~

 

~Begin dsDepartments~

~WORKER~ должность: ~PROFESSION~

~End dsDepartments~

 

Подпись.

При выполнении отчета, "~Departments~" - список отделов через запятую, выбранных пользователем в одноименном параметре.

 

Сформированный документ:

Список работников отделов.
Банк2, Касса1

 

Сохин должность: Инкассатор
Полонен должность: Кассир
Пронин должность: Грабитель
Иванченко должность: Охранник
Пономарев должность: В эпизодах
Степаненко должность: мл. Кассир
Шовальских должность: ст. Кассир
Нидарчук должность: Уборщица
Семенов должность: Сторож
Гусько должность: Сторож

 

Подпись

 

Этот же шаблон можно перестроить, добавив заголовки столбцам:

Список работников отделов.
~Departments~

 

Сотрудник должность

 

~Begin dsDepartments~
~WORKER~ ~PROFESSION~

 

~End dsDepartments~

 

Подпись.

 

Отчеты со связями "мастер-деталь"

Для построения более сложных отчетов, содержащих "мастер-деталь" связи используются вложенные банды.

~Begin имямастергруппы~

... заголовок подгруппы...

       ~Begin имядетальгруппы~

       ... содержимое подгруппы ...

       ~End имядетальгруппы~

~End имямастергруппы~

 

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

Группы

      имямастергруппы

           имядетальгруппы

 

Пример "Demo1"

Список работников всех отделов.

 

~Begin dsDepartments~

~DEPARTMENTTYPE~: ~DEPARTMENT~

       ~Begin dsWorkers~

       ~WORKER~ должность: ~PROFESSION~

       ~End dsWorkers~

~End dsDepartments~

 

Сформированный документ:

Список работников всех отделов.

 

Отделение: Банк1

Иванов должность: Начальник отдела

Петров должность: Кассир

Головин должность: Сторож


Филиал: Банк2

Сохин должность: Инкассатор

Полонен должность: Кассир

Пронин должность: Грабитель

Иванченко должность: Охранник

Степаненко должность: мл. Кассир

Семенов должность: Сторож


Отделение: Касса1

Пономарев должность: В эпизодах

Шовальских должность: ст. Кассир

Нидарчук должность: Уборщица

Гусько должность: Сторож


Отдел: Касса2

Ященко должность: Бригадир

Ковальцев должность: Директор

Ромов должность: Сторож

 

Обработка событий при построении отчета.

Для модификации основных свойств бандов и параметров используются различные обработчики событий связанные с группой (бандом). Более полная информация в разделе "События".

 

Пример "Demo5"

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

Шаблон документа.

~Begin dsWorkers~

 
Приложение 3
К пункту 11 трудоустройства
Форма 2

 

Направление на учебу № ~RecNo~
~WORKER~
который (ая) работает

~dsParameters.OrgName~, ~DEPARTMENTTYPE~: ~DEPARTMENT~

по специальности ~PROFESSION~
направляется в распоряжение ~Ministry~
для повышения квалификации  

 

Дата начала обучения ________________ г.

 

М.П.

~Post1~ ~Name1~
~Post2~ ~Name2~

 

“_____”___________________ г.

~NewPage~~End dsWorkers~

 

Параметру "~NewPage~" после каждого четного бланка (кроме последнего) необходимо присваивать команду разрыва страницы "\page". Для этого у группы "dsWorkers" создадим обработчик события "OnGetFieldData".

procedure dsWorkers_OnGetFieldData(Field: TDBFieldInfo);

begin

     If (Field.FieldName = 'NewPage') and (Field.Dataset.RecNo/2 = Field.Dataset.RecNo div 2) and (Field.Dataset.RecNo < Field.Dataset.RecordCount)

        Then Field.Value := '\page';

end;

 

В обработчике:

Field.FieldName = 'NewPage' - проверяем, что событие произошло именно перед созданием параметра 'NewPage'.

Field.Dataset.RecNo - получаем текущий номер текущей записи в группе "dsWorkers" (начиная с 1).

Field.Dataset.RecordCount - общее количество записей в группе "dsWorkers".

Field.Value - новое значение параметра, которое будет выведено в документ.

 

В заключение хотелось бы отметить, в шаблоне используется обращение к другой группе: "~dsParameters.OrgName~" для получения информации из справочной таблица "PARAMS".

содержание

Copyright © 2004: Alexander Krepky, Eugeny Makalish