Подскажите как правильно решить такую задачу:
в отчет типа fastreport выводится информация о названии и дате регистрации инцидентов, сгруппированные по Продажам (поле Продажа не должно быть пустым), с которыми эти инциденты связаны.
При этом получается посчитать кол-во инцидентов по каждой продаже и итоговое кол-во инцидентов по всем продажам. Для этого я использую функцию Count.
Нужно посчитать еще и среднее кол-во инцидентов по этим продажам. Но функция AVG почему-то работает неверно.
У меня в отчете только 1 dataset - Название Инцидента, Дата регистрации, Название Продажи, ID инцидента и ID продажи.
Думаю, без дополнительной обработки отображать среднее значение по продажам не получится.
Попробуйте поступить следующим образом:
1) В бэнде GroupFooter1 отображать текст "Итого:" в одном поле, а количество - в другом.
2) Убрать весь текст из поля в бэнде Footer1.
3) На закладке Code сервиса отчёта объявить 2 переменные: для общего количества инцидентов и общего количества групп (продаж):
var IncidentCount, OpportunityCount: integer;
4) Для объекта Page1 создать обработчик события OnBeforePrint, в котором обнулять эти переменные:
procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
IncidentCount :=0;
OpportunityCount :=0;
end;
5) Для поля, в котором вычисляется количество инцидентов в продаже (одно из полей бэнда GroupFooter1), создать обработчик события OnAfterPrint, в котором записывать значение поля в переменную IncidentCount, а количество групп (переменную OpportunityCount) увеличивать на 1:
Спасибо, все так и получилось.
Я таким же способом вывела в отчет и общее кол-во инцидентов по всем продажам :smile:
Подскажите еще какое свойство в Memo отвечает за отражение текста (например названия инцидента) не одной срокой, а по размеру названия в несколько строк, а то названия у меня получились "обрезанные".
Очень часто пользователи просят при печати отчетов Fast Report печатать отчет сразу на принтере по умолчанию без показа диалога выбора принтера. Для этого необходимо в отчете установить для frxReport в PrintOptions свойство ShowDialog в false. Работает в версии 3.3.1, в более ранних не проверял.
Алексей, спасибо за ценный материал. Для полного счастья пользователя не хватает способа печати отчета без его показа. Автоматически, чтобы пользователь вообще не нажимал никаких кнопок. Например, наступил конец рабочего дня - система сама печатает отчет о достижениях за день :).
>>Автоматически, чтобы пользователь вообще не нажимал никаких кнопок.
А в чем проблема? Вешаешь на Планировщик заданий окно со скриптом, в котором вызываешь формирование отчета и Print(). Так что и такая фантазия в принципе реализуема.
Чтобы совсем не показывать отчет не получилось. Но удалось используя ReportPreviewer.Close() закрыть окно.
Конечно, "моргание" заметно, но лучше, чем лишний клик, который так мешает клиентам.