44

我正在尝试通过 url 将参数传递给 SSRS,但它似乎不起作用!

我正在尝试通过 url 传递一个 userId(字符串),该 url 将传递给数据库并由查询使用。

基本网址: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport

试过这个但它不起作用: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred

有任何想法吗

4

9 回答 9

57

我有同样的问题和更多问题,虽然这个线程很旧,但它仍然是一个很好的问题,所以总结一下 SSRS 2008R2 我发现......

情况

  1. 您想使用 URL 中的值来查找数据
  2. 您想在报表中显示来自 URL 的参数
  3. 您想将参数从一个报表传递到另一个报表

行动

如果适用,请务必将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(参考

综上所述,您可以运行带有嵌入值的 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

于 2013-06-06T17:42:55.120 回答
48

除了设拉子所说的,尝试这样的事情:

http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'

请注意,仅当您位于单个文件夹中时,该路径才有效。当我必须这样做时,我只需使用报告服务器路径(“报告”是报告管理器)浏览到报告并复制 url 然后添加&<ParameterName>=<value>到末尾。

于 2009-07-14T23:51:04.497 回答
8

我自己刚刚解决了这个问题。我在 MSDN 上找到了解决方案:http: //msdn.microsoft.com/en-us/library/ms155391.aspx

格式基本上是

http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
于 2009-08-31T14:25:55.483 回答
7

尝试在您的 url 中将“Reports”更改为“ReportServer”

于 2009-07-03T14:47:22.817 回答
4

尝试通过 url 传递多个值:

/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF

这应该有效。

于 2011-05-09T10:44:50.713 回答
1

我通过在 URL 中传递可用参数的值而不是参数的标签来解决了类似的问题。

例如,我有一个带有名为 viewName 的参数的报告,该参数的预定义可用值为:(labels/values) orders/sub_orders、orderDetail/sub_orderDetail、product/sub_product。

要使用 URL 调用此报告以自动呈现 parameter=product,您必须指定值而不是标签。
这将是错误的: http://server/reportserver?/Data+Dictionary/DetailedInfo&viewName=product&rs:Command=Render

这是正确的: http://server/reportserver?/Data+Dictionary/DetailedInfo&viewName=sub_product&rs:Command=Render

于 2015-12-10T16:11:23.993 回答
0

尝试在您的 url 中将“Reports”更改为“ReportServer”。为此,只需访问它http://host/ReportServer/,您就可以从那里转到报告页面。像这样附加你的参数 &<parameter>=<value>

如需更多详细信息:

http://dobrzanski.net/2008/08/11/reporting-services-problem-with-passing-parameters-directly-in-the-url/

https://www.mssqltips.com/sqlservertip/1336/pass-parameters-and-options-with-a-url-in-sql-reporting-services/

于 2017-04-11T15:06:50.657 回答
0

使用下面提到的 URL 在带有动态参数的新窗口中打开报告。

="javascript:void(window.open('http://Servername/ReportServer?/Foldername/Reportname&rs:Commnd=Render&parameter1=" & Fields!A.Value & "&parameter2=" & Fields!B.Value & "'))"
于 2022-02-12T01:33:36.043 回答
-1

http://desktop-qr277sp/Reports01/report/Reports/reportName?Log%In%Name=serverUsername¶mName=value

使用服务器身份验证将参数传递给报表

于 2020-10-16T07:31:14.367 回答