使用表达式动态决定打开哪个子报表

时间:2014-05-06 10:48:35

标签: reporting-services sql-server-2012 subreport ssrs-2012 ssdt-bi

我的报告中包含多个包含图表,表格等的页面。 此报告由不同客户使用,他们总是希望对报告进行少量修改。目前,如果客户想要在第5页进行更改,则会使用修改重新创建整个报表,即使第5页的图表中只有更改。

更多的是,有些客户不希望看到第3页,其他客户则希望在第6页看到自定义表格。 我的老板希望报告是模块化的,这样他就可以根据客户的需要简单地打开/关闭部件。目前,报告中的更改意味着开发,然后是部署。

我的想法是创建一个包含多个子报表的报表。每个图表/表都是子报表,因此如果需要更改,我们只需要更改特定的子报表。

理想情况下,数据集将附加到主报表,详细说明要显示的子报表:对于客户X,我们将显示SubreportX,客户Y将看到subreportY。

我知道这可以通过将所有可能的子报表添加到主报表并切换每个子报表的可见性来完成,但更优雅的是动态决定要显示的子报表。在钻取报告中,可以使用表达式确定要打开的报告;

例如IIF(customer = X, "subreportX", "SubreportY")

但这可能与子报告有关吗?

要明确:我正在寻找一种方法来在打开子报告显示的报告时动态决定。类似于使用表达式获取所需子报表的名称。

我一直在寻找这个(在VS2012和谷歌),但我似乎无法找到一个明确的答案是否有可能决定在报告中显示哪些子报告显示....

我发现了以下内容,但这似乎只是在使用切换可见性:

Dynamic subreport in SSRS 2008

我非常希望得到建议,答案甚至一般指示。谢谢你和我一起思考!

1 个答案:

答案 0 :(得分:1)

我会创建一个数据集,返回所选客户的有效子报表列表。我会将所有可能的子报表添加到主报表中。我将使用Lookup表达式设置每个子报表的Visibility属性,以此数据集为目标。