пятница, 12 июля 2013 г.

Гибкий генератор отчетов 2

продолжение статьи.

Долгое время был занят по работе, но теперь снова есть время продолжить начатое.
Время проходит и ничто не стоит на месте.

Базу данных непернес с Paradox на платформу СУБД MySQL, для этого пришлось написать конвертер, но об этом в другой раз.

 Вернемся к тому что сам отчет строится из 3х файлов:


1)      <файл>.SQL  
Это файл SQL запроса к базе данных, именно вернувшийся набор данных и будет дальше рассматриваться программой.
2)      <файл>.XLS
Это файл MS Excel составленный по определенному шаблону именно в него будут помещены данные полученные запросом, но именно в такой форме как указано в шаблоне. Фактически Excel это дизайнер выходного бланка отчета.
3)      <файл>.INI
Это файл Param имеет расширение .ini и служит файлом дополнительных параметров, которые могут использоваться на разных этапах генерации отчета.



SQL файл запроса
                Файл запроса содержит текст в формате ANSI написанный на языке запросов SQL поддерживаемый версией MySQL. За дополнительной документацией по отличиям языка именно в этой СУБД можно обратится на сайт производителя MySQL.
Примером файла запроса будет служить следующий фрагмент:
select main.prim,main.ser, main.dataP,main.nal,s_kart.caption,s_stat.stat        from main left join s_kart on (main.kart=s_kart.id) left join s_stat on (main.stat=s_stat.id)

Данный запрос вернет таблицу
PRIM
SER
DATAP
NAL
CAPTION
STAT
Данные
Данные
Данные
Данные
Данные
Данные
К названию возвращаемых столбцов нужно относится внимательно так как для передачи в форму отчета  необходимо будет их указать.
Дополнительно SQL запрос был расширен новым функционалом поддерживаемым только Генератором отчетов. Можно использовать такие функции:
#[GETDATE][Текст сообщения]# - будет выведен запрос на ввод даты при этом показан текст сообщения
#[GETTABLE][Table:Field View:Field Result:Сообщение]# -Будет показан список в котором можно выбрать одно значение
                Параметры 
                Table – имя таблицы из которой берутся данные
                Field View – поле которое будет показано пользователю для выбора
                FieldResult – поле которое вернется в SQL запрос как результат
                Сообщение – Текст который будет показан пользователю
Пример:
 select * from test where date='#[GETDATE][Введите текущую дату]#'
select * from test where id_Printer=#[GETTABLE][spr_printers:printer_name:printer_id:Выберите модель принтера для обслуживания]#
После обработки функции запрос будет выглядеть так:
select * from test where date='2012-07-01'
select * from test where id_Printer=24
XLS файл дизайна отчета
Файл  дизайна отчета подготавливается в программе MS Excel на текущий момент генератор отчетов благополучно работает с форматами 2003/2007  года, но уверен что и последующие выпуски будут работать нормально, так как кардинальных изменений в механизме быть не может.
Файл дизайна строится по такой схеме:
Весь отчет делится на 3 части: Шапка, Тело отчета, Подвал
Именно по этому 1 столбец таблицы является служебным.
Для указания разделения блоков в первом столбце указываются служебные слова:
TitleШапка
Line – Тело таблицы. Будет повторятся столько раз сколько строк вернет SQL запрос
Foot - подвал
Примером шаблона может служить следующая таблица
Поля из SQL запроса передаются в отчет специальной дериктивой #ПОЛЕ#
Как мы видим PRIM это поле таблицы которое вернул запрос, но для того что бы его учитывать обрамляем решетками #
Кроме того есть ряд дополнительных функций которые можно использовать
#FCURRENTDATE# -в это место будет вставлена текущая дата
#FCOUNTER# -счетчик номеров записей, будет выведено номер по порядку.
#FCOUNT# - вставит количество записей вернувшееся запросом



INI файл параметров
В файле параметров записываются константы которые можно использовать в MS Excel шаблоне
Формат записи:
КОНСТАНТА = ЗНАЧЕНИЕ
Пример:
FIRMA = Наша фирма
Для того что бы эта константа появилась в отчете  необходимо в XLS шаблоне указать #FIRMA#
Кроме того есть  служебная функция которая объявляется 3 параметрами. При обнаружении этой функции Excel выполнит «Промежуточные итоги».  Для использования этой возможности объявляем 3 константы
ONCHANGE=<число>
                При изменении в столбце <число>  таблицы Excel
ONACTION=< SUMM | COUNT>
                Будет выполнено действие SUMM- сумма, COUNT - количество
ONRESULT=<число>
                По столбцу <число>
И добавлена строка содержащая информацию по выделенному блоку.
Пример:


 

Комментариев нет:

Отправить комментарий