Есть ли какой-нибудь способ повторно использовать набор данных Crystal Reports?
-
08-06-2019 - |
Вопрос
Я пытаюсь написать отчет Crystal, в котором итоговые данные сгруппированы иначе, чем в основном отчете.Единственный способ, которым я смог сделать это до сих пор, - использовать вложенный отчет для итогов, но это означает необходимость снова обращаться к источнику данных, чтобы получить те же данные, что кажется бессмыслицей.Вот упрощенный пример:
date name earnings source location
-----------------------------------------------------------
12-AUG-2008 Tom $50.00 washing cars uptown
12-AUG-2008 Dick $100.00 washing cars downtown { main report }
12-AUG-2008 Harry $75.00 mowing lawns around town
total earnings for washing cars: $150.00 { subreport }
total earnings for mowing lawns: $75.00
date name earnings source location
-----------------------------------------------------------
13-AUG-2008 John $95.00 dog walking downtown
13-AUG-2008 Jane $105.00 washing cars around town { main report }
13-AUG-2008 Dave $65.00 mowing lawns around town
total earnings for dog walking: $95.00
total earnings for washing cars: $105.00 { subreport }
total earnings for mowing lawns: $65.00
В этом примере основной отчет сгруппирован по "дате", но итоговые данные дополнительно сгруппированы по "источнику".Я просмотрел примеры использования текущих итогов, но на самом деле они не делают того, что мне нужно.Разве нет какого-нибудь способа сохранить результирующий набор и сделать так, чтобы и основной отчет, и вложенный отчет ссылались на одни и те же данные?
Решение
Хм...как бы ни было приятно вызывать сохраненную процедуру из отчета и размещать все это в одном месте, однако мы обнаружили (как и вы), что в конечном итоге вы попадаете в точку, где вы не можете заставить crystal делать то, что вы хотите, даже если данные находятся прямо там.
В итоге мы внедрили бизнес-уровень, который находится под отчетом, и вместо того, чтобы "вытаскивать" данные из отчета, мы "помещаем" в него наборы данных и привязываем данные к отчету.Преимущество заключается в том, что вы можете манипулировать данными в коде в наборах данных или объектах до того, как они попадут в отчет, а затем просто привязать данные к отчету.
Эта статья содержит приятное введение о том, как настроить отправку данных в отчеты.Я понимаю, что ваши временные / бизнес-ограничения могут не позволить вам сделать это, но если это вообще возможно, я бы настоятельно рекомендовал это, поскольку это означает, что мы можем удалить все "кодирование" из наших отчетов в управляемый код, что всегда хорошо.
Другие советы
Единственный способ, который я могу придумать, чтобы сделать это без повторного прогона данных, - это создать несколько формул для подсчета текущих итогов по группе.Проблема, с которой, я предполагаю, вы сталкиваетесь с существующими текущими итогами, заключается в том, что они предназначены для следования за каждой из групп, которые они суммируют.Поскольку вы, похоже, хотите, чтобы промежуточные итоги следовали после всех "необработанных" данных, это не сработает.
Если вы создадите свои собственные формулы для каждой группы, которые просто суммируют сумму из тех строк, которые соответствуют группе, вы сможете поместить их в конец отчета.Недостатком такого подхода является то, что итоговые промежуточные итоги не будут динамичными по отношению к группам.Другими словами, если бы у вас был новый "источник", он не отображался бы в промежуточных итогах, пока вы его не добавили, или если бы у вас не было данных о выгуле собак, у вас все равно был бы промежуточный итог для него.