我正在尝试通过 url 将参数传递给 SSRS,但它似乎不起作用!
我正在尝试通过 url 传递一个 userId(字符串),该 url 将传递给数据库并由查询使用。
基本网址: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
试过这个但它不起作用: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
有任何想法吗
我正在尝试通过 url 将参数传递给 SSRS,但它似乎不起作用!
我正在尝试通过 url 传递一个 userId(字符串),该 url 将传递给数据库并由查询使用。
基本网址: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
试过这个但它不起作用: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
有任何想法吗
我有同样的问题和更多问题,虽然这个线程很旧,但它仍然是一个很好的问题,所以总结一下 SSRS 2008R2 我发现......
情况
行动
如果适用,请务必将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 传递参数:
作为参考,/ = %2f
除了设拉子所说的,尝试这样的事情:
http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
请注意,仅当您位于单个文件夹中时,该路径才有效。当我必须这样做时,我只需使用报告服务器路径(“报告”是报告管理器)浏览到报告并复制 url 然后添加&<ParameterName>=<value>
到末尾。
我自己刚刚解决了这个问题。我在 MSDN 上找到了解决方案:http: //msdn.microsoft.com/en-us/library/ms155391.aspx。
格式基本上是
http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
尝试在您的 url 中将“Reports”更改为“ReportServer”
尝试通过 url 传递多个值:
/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
这应该有效。
我通过在 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
尝试在您的 url 中将“Reports”更改为“ReportServer”。为此,只需访问它http://host/ReportServer/
,您就可以从那里转到报告页面。像这样附加你的参数
&<parameter>=<value>
如需更多详细信息:
使用下面提到的 URL 在带有动态参数的新窗口中打开报告。
="javascript:void(window.open('http://Servername/ReportServer?/Foldername/Reportname&rs:Commnd=Render¶meter1=" & Fields!A.Value & "¶meter2=" & Fields!B.Value & "'))"
http://desktop-qr277sp/Reports01/report/Reports/reportName?Log%In%Name=serverUsername¶mName=value
使用服务器身份验证将参数传递给报表