Печать отчетов. Окончание.
Мне хотелось продемонстрировать вам возможности объекта Printer и я выбрал
для этого свой исходный код, позволяющий "на лету" формировать разнообразные отчеты из
DBGrid, заполняемой меняющимися SQL-запросами, в зависимости от выбранных пользователем условий.
Собственно говоря, на форме два элемента DBGrid: основной Grid и Grid2, в который также
SQL-запросом выводится итоговая сумма по одному из полей отчета.
Этот фрагмент кода позволяет сформировать многостраничный табличный отчет, рассчитав неизвестные заранее
количество и ширину столбцов для формата бумаги A4, выводит на печать заголовок Grid, названия
и значения полей, наименование и значение итоговой суммы из Grid2. Ограничение - в этом варианте записи в полях таблицы могут
выводиться только в одну строку (т.е. есть они не должны быть длинными), количество столбцов программно ограничено 15-ю,
но фактически это значение находится в зависимости от длины текста в полях таблицы, что желательно учитывать при формировании запросов.
Думаю, этот фрагмент придется кстати тем, кто работает с базами данных, так как универсальные контролы типа RoboPrint далеко
не всем российским программистам по карману.
Для того, чтобы посмотреть, как он работает - разместите на форме два элемента DBGrid
и 2 элемента Data, кнопку "Печать". Назовите их, соответственно, Grid, Grid2, DataReport, последний - как угодно.
Свяжите Grid c DataReport, Grid2 - со вторым элементом Data.
Все, остается синхронно для обоих элементов Data менять SQL-запросы к вашей базе данных (во втором использовать
"SELECT SUM(ИмяПоля) As [Итого за месяц, год и т.д. ... :] FROM ... WHERE ..." )
и нажимать на кнопку...
Сама процедура приведена здесь.
Аналогичный пример отчета для элемента MSFlexGrid. Здесь используется многостраничная печать
на бумаге формата A4 в "ландшафт". Группы строк предваряются заголовками, печатающимися через всю таблицу длинной строкой.
Текст заголовков должен быть заранее сформирован в MSFlexGrid в левом крайнем столбце для строк, начинающих группу
строк. Завершает отчет итоговая строка. В остальном используются те же самые
механизмы расчета количества и ширины столбцов с коррекцией их под свойства MSFlexGrid.
В отличие от предыдущего фрагмента для формирования отчета используется только элемент MSFlexGrid, названный Grid и его свойства.
Сам Grid может заполняться посредством SQL-запросов, изначально количество столбцов в нем не известно.
Процедура приведена здесь.
Используются технологии
uCoz