Delphi. FastReport. Отправка отчета на почту в HTML формате

Заказчик захотел получать красивые отчеты на почту.

Решил использовать FastReport и придерживаться следующего алгоритма

Генерировать отчет в HTML файл

Загрузить  в строку

Отправить на почту

Код (Очень черновой вариант, но чтобы было)

 

Также кусок кода из примера UniGUI для FastReport

 

FastReport – показ отчета из отдельного потока

В данной статье посмотрим как можно пользоваться многопоточностью в FastReport. Делается это всё достаточно просто, в документации подробно об этом написано. Достаточно учесть несколько нюансов. Мы же разберем самый простой пример – загрузим из файла отчет, экспортируем его в другой файл и отобразим пользователю – и всё это в отдельном потоке.

Почему из отдельного файла? Тут всё от задачи конечно, зависит, но большинство отчетов типовые и их можно хранить в файлах на диске, это сильно экономит место. Вообще, я бы сказал, это наверное даже норма. Другой вариант – хранить отчет в компоненте frxReport – то есть, по сути в оперативной памяти – тоже рабочий, но тут встает вопрос с памятью, если ей небрежно разбрасываться, то….

То есть как это выглядит на практике? Бросаем на форму компонент frxReport, кликаем по нему 2 раза, собираем свой отчет в открывшемся дизайнере, и далее, если решили загружать из файла сохраняем из дизайнера отчет, и удаляем, например компонент frxReport с формы. Если же решили загружать отчет из этого компонента, то соответственно оставляем.

В данном примере всё очень просто – создается поток, который создает внутри себя экземпляр датамодуля, с “заряженными” кодами загрузки, экспорта и показа файла отчета.

Само обращение к файлу, конечно, лучше защищать чем-то вроде критических секций. Так как если планируется массовое обращение к разделяемому ресурсу, то этим, конечно, надо управлять.

13

14 Continue reading

FastReport. UniGUI – вывод отчетов в Web

Это удивительно, но FastReport VCL отлично вписался в Web при помощи фрэймворка UniGUI. Разберем пример из демо-версии UniGUI, который находится в

Вот результат работы примера

2

1

Мы рассмотрим только основные моменты по коду. Пример целиком можно получить, скачав UniGUI фрэймворк и пройдя до демо папки, описанной выше. Continue reading

FastReport. Динамический вывод PageHeader/PageFooter

Часто бывает, что клиентам нужно давать изменять свои логотипы, писать в колонтитулах, и так далее. Для этого можно задействовать динамический вывод компонентов.

В данной статье посмотрим как можно динамически вывести PageHeader и Page Footer с возможностью редактирования клиентом. Получится примерно так.

36 Continue reading

FastReport. Создание пользовательских отчетов

Под пользовательскими отчетами я понимаю отчеты, в которых у пользователя есть хотя бы минимальный выбор – какие данные будут включены в отчет, как они будут расположены и так далее. То есть, некоторая кастомизация. Часто пользователи любят вставлять свои логотипы в отчет, названия своих фирм, цвета и прочее. Частично эти задачи можно решить без программирования – дав некоторый выбор пользователю. В данной статье посмотрим самый простой пример – выбор полей БД для вывода пользователю.

Возьмем наш предыдущий пример с выводом 200 записей в БД и немного изменим его таким образом.

5 Continue reading

FastReport. Динамический вывод 200 записей

В данной статье посмотрим как вывести большое число данных. Для этого, с одной стороны воспользуемся техникой ArrayDML из FireDAC, а с другой стороны возможностями FastReport по выводу данных на страницы. И вот какой результат у нас получится.

21

 

22

 

23 Continue reading

FastReport. Динамическое создание отчетов. Вывод данных из БД

Продолжаем цикл статей про динамический вывод данных из Fasteport. Посмотрим как можно вывести данные динамически, также моя дизайнерская душа не удержалась, и я немного занялся оформительством, добавил градиенты в отчет. Получилось  так…

21

Имя и Фамилия это соответственно поля Name и Family из БД. Итак, приступим к динамическому выводу данных из БД при помощи FastReport. Continue reading

FastReport. Динамический вывод отчетов. Начало

Решил более детально изучить FastReport VCL, так как разрабатываю программу, в которой нужно динамически выводить отчеты. Это будет небольшой цикл статей, в котором мы пройдем от простого к сложному и по шагам разберем основные моменты работы с FastReport. Акцент я решил сделать именно на динамическом выводе отчетов, потому что информации в сети по этой части не так много.

В данной статье мы научимся создавать страницы и добавлять на них текст из кода Delphi и добьемся вот такого результата

16

 

17 Continue reading

Delphi. FastReport. Вывод Master-detail данных из БД. Группировка

В данной статье выведем Master-Detail отчет с помощью FastReport.

За основу базы данных возьмем следующую модель

1

Довольно простой пример. Отделы и сотрудники – связь один ко многим. Попробуем аккуратно отобразить данные в нашем отчете FastReport. Continue reading

Delphi. FastReport. Отображение данных из БД

Данная статья об отображении данных из БД в отчете FastReport.

Продолжаем исследовать FastReport. Подключим базу данных. Я делаю это через FireDAC, но для примера это не так важно, так как FastReport обладает собственным компонентом  TfrxDBDataSet, который подключается напрямую к TDataSet.

Вот что написано в руководстве пользователя

Компонент отвечает за навигацию по записям и обращение к полям. Это позволило не привязывать ядро FastReport к какой-либо библиотеке доступа к данным.

Continue reading