README.MD

Проект simpleReport для создания отчётов.

Класс для генерации html отчётов на основе шаблонов. Для чего? Html читается на всех платформах, любой браузер умеет его печатать.

Шаблон - подготовленный html файл, “рыба” с определенными тегами, которые заменяются данными при создании отчёта.

PS В моей реализации взаимодействует с БД Firebird через класс firelib, но не сложно привязать иную БД.

Файл шаблона разбивается на три части (1,2 и 3) на картинке Header(1) и Footer(3) используются для скалярных результатов, как вычисленных, так и установленных вручную, (2) - заполняется множеством записей из базы посредством SELECT.

Картинка SimpleReport.

Метод для установки параметра вручную

  • void setVal(string nam, string value);

Используется для установки в отчёте параметра nam в значение value. На картинке обозначен как (A).

	...
	// вставляем в отчёт текущую дату
	myRep.setVal("curDate", getDate());	
	...

Установка одного параметра отчета из выборки скалярного SELECT

  • void setSqlVal(connection& cn, string nam, string sql);

Используется для установки в отчёте параметра nam в значение, выбранное из базы запросом sql. На картинке обозначен как (C).

    // выборка и установка в отчёт sum из базы
    myRep.setSqlVal(conn, "sum_sal", "select sum(salary) from employee");

Заполнение таблицы из результата выборки множества значений SELECT

  • void setSqlRowsVal(connection& cn, vector nams, string sql);

Используется для установки в отчёте множества параметров nams в значения, выбранные из базы запросом sql. На картинке обозначены как (B).

	// nams - имена переменных в шаблоне, которые будут заменены 
	// значениеями из таблицы 
	vector<string> nams = { "full_name", "phone_ext", "job_code", "salary" };
	myRep.setSqlRowsVal(conn, nams, "select full_name, phone_ext, job_code, 
	salary from employee order by emp_no");

Можно создавать отчёты вида master-detail. На картинке (B) - master данные, (D) - detail данные. Картинка MasterDetailReport.

Заполнение таблицы из результата выборки SELECT для отчёта Master-Detail

  • void setSqlMDRowsVal(connection& cn, vector nams_m, string sql, vector nams_d, string base_d, string field_d, vector sort_d = {});

    • nams_m - имена параметров в шаблоне (== поля в базе), которые будут заменены значениеями из master таблицы
    • sql - запрос к master таблице
    • nams_d - имена параметров в шаблоне (== поля в базе), которые будут заменены значениеями из detail таблицы
    • base_d - имя detail таблицы
    • field_d - поле ключ, по которому связываются обе таблицы
    • sort_d - опционально, поле detail, по которому можно отсортировать. Там же - направление сортировки.

Формирование отчёта из 3 предварительно заполненных частей

  • void makeReport();

Примеры работы

В архиве - два каталога, для Windwos и Linux. Отличия в кодировке и методах сборки. Проекты MS Visual Studio и CMake, соответственно.

Описание

Инструмент для создания отчётов

Конвейеры
0 успешных
0 с ошибкой