1

我的任务是使用 Reporting Services 2008 报告调查数据。

我的挑战是这样的:

  • 调查有任意数量的问题
  • 问题是三种类型之一(数字评估、是/否问题或自由文本)

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

到目前为止,这实际上工作得很好——但我面临一个主要问题:如何将数据放入子报告中?

我现在看到的方法是让每个问题类型的每个(子)报告基于共享数据源定义自己的数据集,以从数据库中提取值。我很确定这会奏效 - 但我不太希望将 5、10、20 个子报表发送到数据库以独立获取它们的数据。

我希望能够在“主”报告上为整个调查获取一次数据,然后将适当的数据子集提供给每个子报告,因为它正在呈现 - 但我似乎无法找到任何方法来做到这一点......

我错过了一些完全明显的东西吗?我对 Reporting Services 的了解不多,而我的最后一个项目是四年前(使用 Reporting Services 2000)——所以我很有可能只是对明显的解决方案视而不见 :-) 请告诉我!

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

马克

4

3 回答 3

2

通常的方法是将参数(如日期范围)从主报告传递到子报告,然后子报告处理其他所有事情。要提高性能,请查看是否可以从缓存或快照呈现子报表。缓存存储带有传递参数组合的报告,因此在第一次“数据库命中”之后,一些或大部分子报告实际上可能从缓存中返回。

于 2009-11-19T13:24:04.627 回答
1

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

于 2010-08-26T01:19:16.863 回答
0

如果参数您需要的最终数据,那么只需使用它们并在子报表中创建一个虚拟数据集 - 您可以只使用 'SELECT 1 AS DUMMY' 作为 sql(这是假设子报表具有彼此不同的布局)

或者,也许您可​​以使用函数或表函数重新考虑“主”数据集?

它仍然会对 sql 服务器征税,但至少它会一击即完成,并且 RS 盒上的消耗会更少。

于 2010-03-09T16:49:09.397 回答