我正在尝试通过网址将参数传递给SSRS,但似乎无法正常工作!
我正在尝试通过url传递userId(string),该url将传递给数据库并由查询使用。
基本网址: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
尝试了这个,但它不起作用: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
任何想法
答案 0 :(得分:52)
我有同样的问题和更多,虽然这个线程已经老了,但它仍然很好,所以总结一下SSRS 2008R2我发现...
<强>情况强>
操作强>
如果适用,请务必将 Reports / Pages / Report.aspx?ItemPath = 替换为 ReportServer?。换一种说法: 而不是:
http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName
使用以下语法:
http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName
将参数添加到报告并设置为隐藏(或者如果允许用户操作,则可见,但请记住,虽然报告参数将更改,但网址不会根据更新的条目)。
使用&amp; ParameterName = Value
将参数附加到网址可以使用@ParameterName在报告中引用或显示参数,无论它们是在报告中还是在URL中设置
要隐藏显示参数的工具栏,请将&amp; rc:Toolbar = false添加到网址(reference)
将所有内容放在一起,您可以运行带有嵌入值的网址,或者将其作为一个报告中的操作调用,并通过其他报告读取:
http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false
在报表数据集属性中查询:SELECT stuff FROM view WHERE User = @UserID
在报告中,将表达式值设置为[UserID](或= Fields!UserID.Value)
请注意,如果报表包含多个参数,您可能需要在网址中包含所有参数,即使是空白也是如此,具体取决于数据集查询的编写方式。
要使用Action = Go to URL传递参数,请将表达式设置为:
="http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID="
&Fields!UserID.Value
&"&rc:Toolbar=false"
&"&rs:ClearSession=True"
请确保在表达式后面有空格,如果后跟&amp; (换行是不够的)。表达式之前不需要空格。此方法可以传递参数,但不会隐藏它,因为它在URL中可见。
如果您不包含&amp; rs:ClearSession = True,则在清除浏览器会话缓存之前,报告不会刷新。
使用Action = Go to report:
传递参数供参考,/ = %2f
答案 1 :(得分:46)
除了设拉子所说的,尝试这样的事情:
http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
请注意,路径仅在您位于单个文件夹中时才有效。当我必须这样做时,我只需使用reportserver路径浏览报告(“reports”是报告管理器)并复制网址,然后将&<ParameterName>=<value>
添加到最后。
答案 2 :(得分:8)
我自己刚刚解决了这个问题。我在MSDN上找到了解决方案: http://msdn.microsoft.com/en-us/library/ms155391.aspx
格式基本上是
http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
答案 3 :(得分:6)
尝试在网址中将“报告”更改为“ReportServer”
答案 4 :(得分:3)
尝试通过url传递多个值:
/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
这应该有用。
答案 5 :(得分:1)
我通过传递URL中可用参数的值而不是参数的标签来解决类似的问题。
例如,我有一个名为viewName的参数的报告,参数的预定义可用值是:(标签/值)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
答案 6 :(得分:0)
根据此link,如果不使用代理语法,您可能还需要为您的参数添加&amp; rp前缀
答案 7 :(得分:0)
尝试在您的网址中将“报告”更改为“ReportServer”。
为此,只需访问此http://host/ReportServer/
,然后您就可以转到报告页面。像你这样附加你的parmaters
&<parameter>=<value>
更多详细信息:
答案 8 :(得分:-1)
http:// desktop-qr277sp / Reports01 / report / Reports / reportName?Log%In%Name = serverUsername&paramName = value
通过服务器身份验证将参数传递给报告