Есть ли какой-нибудь способ повторно использовать набор данных Crystal Reports?

StackOverflow https://stackoverflow.com/questions/8669

Вопрос

Я пытаюсь написать отчет 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 делать то, что вы хотите, даже если данные находятся прямо там.

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

Эта статья содержит приятное введение о том, как настроить отправку данных в отчеты.Я понимаю, что ваши временные / бизнес-ограничения могут не позволить вам сделать это, но если это вообще возможно, я бы настоятельно рекомендовал это, поскольку это означает, что мы можем удалить все "кодирование" из наших отчетов в управляемый код, что всегда хорошо.

Другие советы

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

Если вы создадите свои собственные формулы для каждой группы, которые просто суммируют сумму из тех строк, которые соответствуют группе, вы сможете поместить их в конец отчета.Недостатком такого подхода является то, что итоговые промежуточные итоги не будут динамичными по отношению к группам.Другими словами, если бы у вас был новый "источник", он не отображался бы в промежуточных итогах, пока вы его не добавили, или если бы у вас не было данных о выгуле собак, у вас все равно был бы промежуточный итог для него.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top