我有同样的问题和更多问题,虽然这个线程很旧,但它仍然是一个很好的问题,所以总结一下 SSRS 2008R2 我发现......
情况
- 您想使用 URL 中的值来查找数据
- 您希望在报表中显示来自 URL 的参数
- 您希望将参数从一个报表传递到另一个报表
操作
如果适用,请务必将 Reports/Pages/Report.aspx?ItemPath= 替换为 ReportServer?。换一种说法:
而不是这个:
http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName
使用这个语法:
http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName
将参数添加到报告并设置为隐藏(或在允许用户操作时可见,但请记住,虽然报告参数会更改,但 URL 将不会根据更新条目)。
使用 &ParameterName=Value 将参数附加到 URL
可以使用@ParameterName 在报表中引用或显示参数,无论它们是在报表中设置还是在 URL 中设置
要隐藏显示参数的工具栏,请将 &rc:Toolbar=false 添加到 URL (reference)
将所有这些放在一起,您可以运行带有嵌入值的 URL,或者将其作为一个报告中的操作调用并由另一个报告读取:
http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false
在报表数据集属性查询中:SELECT stuff FROM view WHERE User = @UserID
在报告中,将表达式值设置为 [UserID](或 =Fields!UserID.Value)
请记住,如果报告有多个参数,您可能需要在 URL 中包含所有参数,即使是空白,这取决于数据集查询的编写方式。
要使用 Action = Go to URL 传递参数,请将表达式设置为:
="http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID="
&Fields!UserID.Value
&"&rc:Toolbar=false"
&"&rs:ClearSession=True"
如果后面跟着&,一定要在表达式后面留一个空格(换行是不够的)。表达式前不需要空格。该方法可以传递参数,但不会隐藏,因为它在 URL 中可见。
如果您不包含 &rs:ClearSession=True,则在清除浏览器会话缓存之前报告不会刷新。
使用 Action = Go to report 传递参数:
- 指定报告
- 添加参数以运行报告
- 添加您希望传递的参数(这些参数需要在目标报告中定义,因此据我所知,您不能使用此方法使用特定于 URL 的命令,例如 rc:toolbar);但是,我想可以通过报告中的自定义代码读取或设置提示用户复选框,如报告服务器参数中所示。)
供参考,/ = %2f