Crystal Reports - сумма столбцов в группе - PullRequest
1 голос
/ 27 мая 2011

Итак, я создал следующий фрагмент кода для запуска в формуле, чтобы разобраться с количеством отработанных часов для каждого трудоемкого кода ...

NumberVar totalHours := SUM({LaborTicket.HoursWorked}, {LaborTicket.VisualCode});
NumberVar totalMinutes := SUM({LaborTicket.HoursWorked}, {LaborTicket.VisualCode}) * 60 MOD 60;
NumberVar totalSeconds := SUM({LaborTicket.HoursWorked}, {LaborTicket.VisualCode}) * 3600 MOD 60;

ToText(totalHours, 0) + ":" +
ToText(totalMinutes, '00') + ":" + 
Totext (totalSeconds , '00' )

Он преобразует мое представление 1,50 часа в 1 час и 30 минут (или 1:30:00), прекрасно.

Однако теперь они хотят, чтобы отчет был по клиенту, по визуальному коду ...

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

Вышеуказанная функция суммирует ВСЕХ клиентов, а не только одного на тот момент в отчете, поэтому мне нужно иметь возможность суммировать на основе визуального кода И имени клиента. Есть предложения?

Я использую версию Crystal, которая поставляется с Visual Studio 2010 (ну, ту, которую вы загружаете после установки)

Ответы [ 2 ]

0 голосов
/ 01 июня 2011

Хорошо, похоже, вам просто нужно создать новую группу перед группой VisualCode с помощью поля Client.Если у вас есть две группы, вы сможете продолжить и вставить свои итоговые поля, используя новую группу клиентов.Я понимаю, что эта сводка будет показывать 1,5 вместо вашего формата (1:30:00), но это упражнение просто для того, чтобы убедиться, что вы получаете данные, а затем вы можете изменить форматирование с помощью своей формулы, как только у вас будут правильные данные.

Получив это, вы сможете найти это новое сводное поле в дереве полей редактора формул в разделе «Поля отчета».Затем вы можете изменить каждую SUM({LaborTicket.HoursWorked}, {LaborTicket.VisualCode}) часть вашей функции форматирования на новое поле сводки и поместить его в тот же раздел, что и поле неформатированного резюме.Чтобы завершить его, просто подавьте поле неформатированного резюме, чтобы осталось только ваше поле, и поместите его в нужное место в разделе.Надеюсь, это поможет.

0 голосов
/ 27 мая 2011

Вам нужно вставить внутреннюю группу по имени клиента и суммировать по этой группе - это автоматически группирует по всем уровням группы. Или, если я неправильно понял, и вам нужна сумма по клиенту, а не по разным визуальным кодам, тогда вам нужно создать поле промежуточной суммы.

...