在Crystal Reports 2008中共享父报表和子报表之间的数据集?

bln*_*hie 5 subreport crystal-reports crystal-reports-2008

我对Crystal报表很新,并使用Crystal Reports 2008来满足我们的报表需求.

我们要求来自单一来源的数据需要以3种不同的方式呈现在报告中.

因此,我设计它的方式是,将3个不同的子报告与数据源设置为来自DB的相同过程和容纳这些子报告的容器报告.根据用户选择单独或分组查看报告,我可以抑制/不抑制容器报告中的子报告.

根据当前设计的要求,报告完美地运行.但是当用户选择一起查看所有3种呈现模式时,即当调用所有3个子报告时,我对报告的性能感到困扰.显而易见的原因是,通过子报告从DB中获取的数据相同,而不是在子报告中一次性获取和重用.我认为应该有一种方法可以在子报告之间共享来自源的数据集,而无需再次访问数据库.但我还没有找到一种方法在Crystal Reports中做到这一点.有没有办法可以明显地实现这一点,以获得性能优势?

笔记:

1)我选择了3个单独的子报告的设计来呈现相同的数据,因为要求需要模块化.但我知道,当使用的数据相同时,通常不建议使用子报告.

2)每个子报告中的数据表示相当复杂.每个子报告使用至少4到5个组部分,并且它们在子报告中不相同.因此,基本上我不知道如何在单个报表中实现具有多个组部分的不同演示文稿,而无需使用子报表来解决此性能问题.

3)我几乎优化了DB程序中的所有内容,这不是痛点.

我正在环顾四周使用谷歌,我从我的理解中假设,我正在寻找像Crystal Reports中的SSRS数据区域这样的功能.我可能错了,因为我不了解SSRS并且不理解我读到的数据区域.

总而言之,Crystal Reports是否支持我想要的功能,从主容器报告中的数据库中获取数据并在子报告中传递/使用它而无需再次访问数据库?

Jus*_*tin 2

子报表与主报表一样绑定到数据源。主报告中的数据通常作为参数传递。据我所知,绑定过程中没有发生数据缓存。如果您通过自定义报表查看器呈现报表,则可以将子报表的数据源绑定到与主报表相同的数据源,从而节省与服务器的额外往返。否则,根据您的描述,如果主报表和子报表的数据来自同一存储过程,您可能可以创造性地使用条件格式来隐藏/显示组部分。