Кристаллический отчет использовать максимум как проблему условия суммы - PullRequest
1 голос
/ 02 июня 2011

Я столкнулся с проблемой с функцией суммы: у данных есть столбец datetime, и я хочу получить сумму макс.А также есть другое состояние группы.Поэтому мне нравится:

  1. Добавить формулу maxDatetime: Maximum ({datetime}, {groupcondition})
  2. Добавить новую формулу для суммы ValueToSum: if ({datetime} = {@maxDatetime}) затем значение else 0
  3. Суммируйте значение, добавьте новую формулу totalValue: Sum ({@ valueToSum}, {groupcondition})

В результате сумма не может бытьобработанный, он говорит: 'valueToSum не может быть суммирован'.

Я думаю, что причинник может использовать максимальное значение в качестве условия на шаге 2. Поскольку при использовании 1 = 1 для замены условия, нетпроблема.

Может кто-нибудь дать совет?

1 Ответ

1 голос
/ 02 июня 2011

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

Другая возможность состоит в том, чтобы накапливать ваше 'totalvalue' в переменную. Может сработать что-то вроде следующего (возможно, нужно настроить):

WhilePrintingRecords();
NumberVar totalvalue;
If ({datetime} = Maximum({datetime}, {groupcondition})) 
then totalvalue:=totalvalue+value 
else 0

Эту формулу (которая отображает итоговое значение) необходимо поместить в нижний колонтитул группы:

WhilePrintingRecords();
NumberVar totalvalue

Где-то в заголовке группы вам нужен еще один для сброса итогового значения:

WhilePrintingRecords();
NumberVar totalvalue:=0
...