Здравствуйте.
Подскажите как правильно решить такую задачу:
в отчет типа 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:
procedure Memo4OnAfterPrint(Sender: TfrxComponent); begin IncidentCount := IncidentCount + Memo4.Value; OpportunityCount := OpportunityCount + 1; end;
6) Для поля из бэнда Footer1 создать обработчик события OnBeforePrint, в котором вычислять среднее значение количества инцидентов по продажам:
procedure Memo5OnBeforePrint(Sender: TfrxComponent); begin Memo5.Text := 'Среднее количество: ' + FloatToStr(IncidentCount / OpportunityCount); end;
Данная реализация должна решить Вашу задачу.
Спасибо, все так и получилось.
Я таким же способом вывела в отчет и общее кол-во инцидентов по всем продажам :smile:
Подскажите еще какое свойство в Memo отвечает за отражение текста (например названия инцидента) не одной срокой, а по размеру названия в несколько строк, а то названия у меня получились "обрезанные".
Необходимо установить ему свойство WordWrap равным true. И, конечно же, чтобы высоты контрола было достаточно, чтобы в нём помещался весь текст.