在SSRS中,是否可以在不使用C#的情况下从主rdl循环一个子报表rdl?

时间:2013-02-27 11:38:15

标签: ssrs-2008 reporting-services

我在使用母版页中的子报表时遇到问题。我的母版页有4个参数,其中一个参数不同。

Master页面中的一个子报告将采用3个常量参数,第4个参数将通过循环更改。输出将创建从4参数生成的许多报告。

如何从Master页面创建一个循环,更改第4个参数的值以运行子报告的次数与4参数中的值一样多?

主要报告(Main.rdl) 参数   为widgetid   RegionID   TimePeriodID

查询将获得不同的StateID

SubReport(subreport.rdl) 参数   为widgetid   RegionID   TimePeriodID   STATEID

报告有5行标题,标题中包含所有参数,包括第一个州名。详细信息行包含该状态内的所有小部件信息。

然后循环以获取下一个StateID并像以前一样重复输出。

然后继续,直到所有StateID都是进程。

我不能按国家分组,因为必须在标题中。

听取Dominic的建议我试着按照他的指示行事。

Main.rdl

通过工具箱创建一个表,并将子报表放在第一个数据列中。

添加了3个参数

数据集输出

SubReport.rdl

添加了3个参数

数据集输出

当我预览Main1.rdl时,我得到第一行,然后是新页面。第二行,然后是新页面。

我想要获得的是在州代码更改后的新页面。

2 个答案:

答案 0 :(得分:0)

您必须创建一个数据集,该数据集将根据您的参数返回行,然后将子报表包含在绑定到该数据集的表中。

答案 1 :(得分:0)

我遇到了同样的问题而且我在创建正确的数据集方面遇到了一些麻烦,因为我一直在使用MDX来访问我的多维数据集。如果你使用SQL,这是不相关的,但我添加这个是因为很多人使用MDX。 我最终做了什么:

- 让我的参数及其数据集自动生成(MDX) - 让我的tablix把我的子报告放进去 - 将此Tablix链接到参数的数据集 - 在Tablix上设置一个过滤器: - ParameterValue“IN”“= Parameters!parameterName.Value”

一定要 - 使用“IN”而不是“=” -use“= Parameters!SLASLANAME.Value”而不是“=参数!SLASLANAME.Value * (0) *”在你的表达式中