Быстрый старт
AKReport

содержание

 

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

Пусть в распоряжении имеется база "Demo1.gdb" (см. папка "examples\"), проинсталлирован "Firebird 1.5".

Структура базы данных:

SET SQL DIALECT 3;

SET NAMES NONE;

 

CREATE DOMAIN MYNAME AS

VARCHAR(50) CHARACTER SET WIN1251;

CREATE GENERATOR GEN_DEPARTMENTS_ID;

CREATE GENERATOR GEN_WORKERS_ID;

 

/******** Tables ********/

CREATE TABLE DEPARTMENTS

(DEPARTMENTID INTEGER NOT NULL,

DEPARTMENT MYNAME,

DEPARTMENTTYPE MYNAME );

 

CREATE TABLE PARAMS

(PARAMNAME MYNAME NOT NULL,

PARAM MYNAME );

 

CREATE TABLE WORKERS

(WORKERID INTEGER NOT NULL,

DEPARTMENTID INTEGER,

WORKER MYNAME,

PROFESSION MYNAME );

 

/*** Primary Keys ***/

ALTER TABLE DEPARTMENTS ADD CONSTRAINT PK_DEPARTMENTS PRIMARY KEY (DEPARTMENTID);

ALTER TABLE WORKERS ADD CONSTRAINT PK_WORKERS PRIMARY KEY (WORKERID);

 

/*** Foreign Keys ***/

ALTER TABLE WORKERS ADD CONSTRAINT FK_WORKERS FOREIGN KEY (DEPARTMENTID) REFERENCES

DEPARTMENTS (DEPARTMENTID) ON DELETE CASCADE;

 

/*** Triggers ***/

 

SET TERM ^ ;

/* Trigger: DEPARTMENTS_BI */

CREATE TRIGGER DEPARTMENTS_BI FOR DEPARTMENTS

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.DEPARTMENTID IS NULL) THEN

NEW.DEPARTMENTID = GEN_ID(GEN_DEPARTMENTS_ID,1);

END

^

 

/* Trigger: WORKERS_BI */

CREATE TRIGGER WORKERS_BI FOR WORKERS

ACTIVE BEFORE INSERT POSITION 0

AS

BEGIN

IF (NEW.WORKERID IS NULL) THEN

NEW.WORKERID = GEN_ID(GEN_WORKERS_ID,1);

END

^

SET TERM ; ^

 

Необходимо получить список работников "Workers" всех отделов.

 

Пример "Demo1"

Запустите дизайнер отчетов "AKReport".

Создайте новый алиас для подключения к базе данных, для этого выберите в меню: "БД" -"Добавить алиас"

В поле "Database Path..." выберите демонстрационную базу. При установке "AKReport" по умолчанию, в поле "Database Path..." следует ввести "C:\Program Files\CSMU\AKReport\examples\DEMO1.GDB". В поле "CharSet" выбирается кодировка "WIN1251", в поле "SQLDialect.." выбирается диалект "3", в поле "Alias..." вводится произвольное имя алиаса, например, "DEMO1". "Role..." в данном случае можно не заполнять, "Username" - "SYSDBA", "Password..." вводится пароль доступа к серверу баз данных, по умолчанию "masterkey". Кнопка "Test Connect" служит для проверки правильности введенных данных. Нажмите "OK" по завершению.

На панели кнопок быстрого доступа следует выбрать из списка созданный алиас "DEMO1", и вписать имя инициализационного файла, например, "demo.ini".

Все готово для создания отчета.

 

Для создания нового отчета следует нажать кнопку "" или выбрать в меню "Файл" - "Новый" или воспользоваться комбинацией быстрых клавиш "Ctrl+N". После чего появится запрос о типе отчета.

Выберите "Отчет на основе Rtf", нажмите "ОК". Откроется пустой документ, который следует сохранить под именем "Demo1.xrp".

Далее для создания мастер-группы "dsDepartments" и деталь-группы "dsWorkers", выберите в структуре отчета раздел " Группы", кликните на нем правой клавишей мыши и из контекстного меню выберите "Добавить группу". В появившейся группе замените название, вместо "Band1" впишите "dsDepartments". Выделите группу "dsDepartments", кликните на ней правой клавишей мыши и из контекстного меню выберите "Добавить группу". В появившейся группе замените название, вместо "Band1" впишите "dsWorkers". Должна получиться такая структура:

Новый отчет

Параметры

Группы

      dsDepartments

           dsWorkers

Выделите группу "dsWorkers" и в инспекторе проверьте, поле "Master" должно содержать имя мастер-группы "dsDepartments".

 

Теперь надо создать для групп SQL запросы.

Выделите группу "dsDepartments", переключитесь на закладку "SQL". Введите следующий SQL запрос.

select DEPARTMENTID, DEPARTMENT, DEPARTMENTTYPE

from DEPARTMENTS

Выделите группу "dsWorkers", переключитесь на закладку "SQL". Введите следующий SQL запрос.

select WORKER, PROFESSION

from WORKERS W

where W.DEPARTMENTID = :MAS_DEPARTMENTID

Приставка "MAS_" указывает на то, что это параметр связи "мастер"-"деталь". Таким образом, запрос "dsWorkers" будет выполняться для каждой записи в запросе "dsDepartments" и выбирать только тех служащих, которые принадлежат текущей записи из "dsDepartments".

 

Теперь перейдем к созданию шаблона отчета.

Откройте шаблон кнопкой "" на панели кнопок быстрого доступа. Наберите в открывшемся редакторе "Word" шаблон отчета.

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

 

~Begin dsDepartments~

~DEPARTMENTTYPE~: ~DEPARTMENT~

       ~Begin dsWorkers~

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

       ~End dsWorkers~

~End dsDepartments~

Все теги, заключенные в знаки "~" набирайте на клавиатуре, а не копируйте через буфер.

Сохраните шаблон. Его имя совпадает с именем отчета. Закройте "Word".

Для выполнения отчета нажмите кнопку "". Если нет ошибок, то откроется документ "Word" с отчетом и сообщение об успешном завершении формирования отчета.

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

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

 

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

 

содержание

Copyright © 2004: Alexander Krepky, Eugeny Makalish