2011-11-15 60 views
5

我对Crystal报表相当陌生,并且使用Crystal Reports 2008来满足我们的报表需求。在Crystal Reports 2008中在父报表和子报表之间共享数据集?

我们有一个要求,需要以三种不同的方式在报告中呈现单一来源的数据。

所以,我设计它的方式,有3个不同的子报告,其中数据源设置为来自DB的相同程序和容纳这些子报告的容器报告。基于用户选择单独查看报告或分组,我抑制/不抑制容器报告中的子报告。

这些报告完全符合当前设计的要求。但是,当用户选择一起查看所有3种呈现模式时,即当所有3个子报告被调用时,我都对报告的表现感到困扰。显而易见的原因是由子报告单独从数据库中提取相同的数据,而不是在子报告中一次性提取和重用。我认为应该有一种方法来源的数据集可以在子报告之间共享,而无需再次敲击数据库。但是我还没有找到在Crystal Reports中这样做的方法。有没有一种方法可以实现这一点,显然是为了提高性能?

注:

1)我选择的3个独立的子报告设计,以提供相同的数据 因为要求希望它的模块化。但我知道, 当使用的数据是 相同时,通常不建议使用子报告。

2)每个子报告中的数据显示相当复杂。每个 子报告至少使用4到5个组部分,并且它们不是子报告中相同的 。所以基本上我不知道 的方式实现不同的演示文稿与 多个小组部分在不使用子报告来解决此 性能问题的单个报告。

3)我已经非常优化了DB程序中的所有内容,它不是痛处。

我正在四处寻找使用谷歌,我从我的理解,我正在寻找一个功能,如水晶报表SSRS中的数据区域。我可能是错误的,因为我不知道SSRS,也不了解我读的数据区域。所以总而言之,Crystal Reports是否支持我想像的那样的功能,从主容器报告中的数据库中获取数据,并在不触及数据库的情况下跨越子报告传递/使用它?

回答

2

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

+0

感谢您的回复。我不理解你将子报表的数据源与主报表的相同数据源绑定的解释。这正是我所需要的。但不幸的是不知道你的答复如何。谢谢。如果你能指出我的方向,将会有所帮助。 – blntechie

+0

您将需要使用java或.net水晶报表查看器并通过代码绑定报表数据源。最终用户如何看待这些报告? – Justin

+0

我们只是从应用链接到报告URL及其参数启动浏览器窗口。我们的应用中没有自定义报告查看器。 – blntechie

相关问题