2009-11-19 116 views
1

我对调查数据的报告负责2008年的Reporting Services - 数据放入使用Reporting Services子报表

我面临的挑战是:

  • 的调查有许多问题:
  • 一问题是三种类型之一(数值EVAL,一个是/否的问题,或自由文本)

为了解决这个问题,我决定在我的主报告,例如使用子报表我为三种问题类型中的每一种定义了一份报告,现在当我报告调查时,我基本上动态地为调查报告创建了一个RDL,并使用三种问题类型作为子报告。

到目前为止,实际上它工作得非常好 - 但我面临着一个主要问题:如何将数据导入子报表?

我现在看到的方法是让每个问题类型的每个(子)报告根据共享数据源定义自己的数据集,以便从数据库中提取值。我很肯定这会起作用 - 但我并不十分热衷于有可能的5,10,20子报表到数据库去独立获取他们的数据。

我所希望的是能够在整个调查中获取数据,在“主要”报告中提取数据,然后将恰当的数据子集输入到每个子报表中,因为它正在呈现 - 但我似乎无法找到任何办法做到这一点....

我错过了一些完全明显的东西?我对Reporting Services没有太多的了解,而且我最近的一个项目是在四年前(与Reporting Services 2000一起) - 所以很有可能我对这个显而易见的解决方案一无所知:-)请让我知道!

感谢您提供任何提示,指向Reporting Services上的优秀文章或博客,以及任何帮助!

马克

回答

2

通常的方法是从主报表参数(如日期范围)传递给子报表,然后子报表打理一切的。为了提高性能,请查看您是否可以从缓存或快照渲染子报表。高速缓存存储的报告结合传递的参数,所以在第一次“数据库命中”之后,实际上可能会从高速缓存返回一些或大部分子报表。

+0

谢谢 - 我希望找到另一种方式,但看起来真的没有多少我可以在这里做,除了传递参数和查询每个子报表中的数据分开。 – 2009-11-20 13:51:19

0

如果参数您所需要的最终数据,那么就使用它们,在报表创建一个虚拟数据集 - 你可以只是“选择1作为虚拟”的SQL(这是假设的子报告有从另一个不同的布局)

或者你也许可以重新考虑具有函数或表函数的'master'数据集?

它仍然会对sql服务器征税,但至少它会在一次打击中做到这一点,并且RS盒子上的漏洞会少一些。

1

我挣扎着同样的问题。但是有一种方法可以使用“缓存共享数据集”实现合理的性能。基本上,子报表将使用包含所有子报表的所有行的较大数据集。通过使用“数据集过滤器”,每个子报表都可以正确地过滤出行。 但是,这仅适用于2008版本。