Я пытаюсь написать Crystal Report, в котором итоги сгруппированы иначе, чем в основном отчете. Единственный способ сделать это до сих пор - использовать подотчет для итогов, но это означает, что придется снова обращаться к источнику данных для получения тех же данных, что кажется чепухой. Вот упрощенный пример:
date name earnings source location
-----------------------------------------------------------
12-AUG-2008 Tom .00 washing cars uptown
12-AUG-2008 Dick 0.00 washing cars downtown { main report }
12-AUG-2008 Harry .00 mowing lawns around town
total earnings for washing cars: 0.00 { subreport }
total earnings for mowing lawns: .00
date name earnings source location
-----------------------------------------------------------
13-AUG-2008 John .00 dog walking downtown
13-AUG-2008 Jane 5.00 washing cars around town { main report }
13-AUG-2008 Dave .00 mowing lawns around town
total earnings for dog walking: .00
total earnings for washing cars: 5.00 { subreport }
total earnings for mowing lawns: .00
В этом примере основной отчет сгруппирован по «дате», но итоги дополнительно сгруппированы по «источнику». Я просмотрел примеры использования промежуточных сумм, но они действительно не делают того, что мне нужно. Разве нет способа сохранить набор результатов, чтобы и основной, и подчиненный отчет ссылались на одни и те же данные?





Единственный способ сделать это без повторного просмотра данных - это создать несколько формул для подсчета промежуточных итогов для каждой группы. Проблема, с которой, как я полагаю, вы сталкиваетесь с существующими промежуточными итогами, заключается в том, что они предназначены для отслеживания каждой из групп, которые они суммируют. Поскольку вы, кажется, хотите, чтобы промежуточные итоги следовали за всеми «необработанными» данными, это не сработает.
Если вы создаете свои собственные формулы для каждой группы, которая просто складывает сумму из тех строк, которые соответствуют группе, вы сможете разместить их в конце отчета. Обратной стороной этого подхода является то, что итоговые итоги не будут динамическими по отношению к группам. Другими словами, если у вас есть новый «источник», он не будет отображаться в промежуточных итогах, пока вы его не добавите, или если у вас нет данных «выгула собак», у вас все равно будет промежуточный итог для него.
Хм ... как бы хорошо это ни было - вызвать сохраненную процедуру из отчета и сохранить все в одном месте, однако мы обнаружили (как и вы), что в конечном итоге вы попадаете в точку, когда вы не можете заставить кристалл делать то, что вы хочу, даже если данные есть прямо здесь.
В итоге мы представили бизнес-уровень, который находится под отчетом, и вместо того, чтобы «извлекать» данные из отчета, мы «проталкиваем» к нему наборы данных и привязываем данные к отчету. Преимущество состоит в том, что вы можете манипулировать данными в коде в наборах данных или объектах, прежде чем они попадут в отчет, а затем просто привязать данные к отчету.
В Эта статья есть хорошее введение о том, как настроить отправку данных в отчеты. Я понимаю, что ваши временные / бизнес-ограничения могут не позволить вам это сделать, но, если это вообще возможно, я настоятельно рекомендую это, поскольку это означает, что мы можем удалить все "кодирование" из наших отчетов в управляемый код, который всегда хорошая вещь.