如何根据SSRS上的参数动态选择数据集

时间:2018-10-25 22:22:49

标签: reporting-services

我有一个正在工作的SSRS报告。现在,我们将推广到不同的站点(数据库中的模式相同,但是它将从其他表中加载数据)。 我的想法是添加一个表达式,可以根据以下示例进行修改:

=switch(Parameters!SiteTable.Value = "1", "select iReportID, sReportName, dtLastUpdated from \""::Company_Table1\"" order by iReportID desc", Parameters!SiteTable.Value = "2", "select iReportID, sReportName, dtLastUpdated from \""::Company_Table2\"" order by iReportID desc")

我的数据源正在从Oracle数据库加载。 我的想法正确吗?有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用2 tablix并根据参数切换可见性。


可见性表达

=IIF(Parameters!SiteTable.Value = "1", true, false)

Tablix属性

screenshot

答案 1 :(得分:0)

使用查询函数可以使用,但是表达式的文本语法使用&来连接字符串。您需要先使用“,&和参数来关闭字符串。我认为您的表达式将使用转义符和Oracle参数指示符::给出错误。如果参数在Oracle中,则我想将其添加而无需转义出字符串(from ::Company_Table2 order by...)-尽管我不确定参数是否可用于对象名称。

=switch(Parameters!SiteTable.Value = "1", 
        "select iReportID, sReportName, dtLastUpdated from " & Parameters!Company_Table1.Value & " order by iReportID desc", 
    Parameters!SiteTable.Value = "2", 
        "select iReportID, sReportName, dtLastUpdated from " & Parameters!Company_Table2.Value & " order by iReportID desc")