通过url传递参数到sql server报告服务

我想通过url传递参数到SSRS,它似乎不工作!

我试图通过传递给数据库和查询使用的url传递一个userId(string)。

基地url: http://blah/Reports/Pages/Report.aspx?ItemPath = MyReport

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

有任何想法吗

和西拉说的一样,尝试这样的事情:

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

请注意,如果您位于单个文件夹中,path才会起作用。 当我必须这样做时,我只需使用reportserverpath(“reports”是报表pipe理器)浏览报表,然后复制url,然后将&<ParameterName>=<value>到最后。

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

情况

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

操作

如果适用,请务必将Report / Pages / Report.aspx?ItemPath =replace为ReportServer? 。 换句话说:而不是这个:

 http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName 

使用这个语法:

 http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName 

将参数添加到报告并设置为隐藏(或者如果允许用户操作,则可见),但请记住,报告参数将更改,但URL 不会根据更新的条目更改)。

使用&ParameterName = Value将参数附加到URL

参数可以使用@ParameterName在报表中引用或显示,不pipe它们是在报表中还是在URL中设置的

要隐藏显示参数的工具栏,请在URL( 参考 )中添加&rc:Toolbar = false

综合起来,你可以运行一个带有embedded值的URL,或者把它作为一个报告的一个动作调用,并由另一个报告读取:

 http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false 

在报表数据集属性查询中:SELECT stuff FROM view WHERE User = @UserID

在报告中,将expression式值设置为[UserID](或= Fields!UserID.Value)

请记住,如果报表具有多个参数,则可能需要在URL中包含所有参数(即使空白),具体取决于数据集查询的写入方式。

要使用Action = Go to URL传递参数,请将expression式设置为:

 ="http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=" &Fields!UserID.Value &"&rc:Toolbar=false" &"&rs:ClearSession=True" 

如果后跟&(换行符不够),请务必在expression式之后留出空格。 expression式之前不需要空格。 此方法可以传递参数,但不会将其隐藏,因为它在URL中可见。

如果您不包含&rs:ClearSession = True,那么在清除浏览器会话caching之前,报告不会刷新。

使用Action传递参数=转到报告:

  • 指定报告
  • 添加参数以运行报告
  • 添加你想传递的参数(参数需要在目标报告中定义,所以据我所知,你不能使用URL特定的命令,如rc:toolbar使用这个方法); 不过,我想可以通过报表中的自定义代码来阅读或设置提示用户checkbox,如报告服务器参数所示。)

作为参考, / =%2f

我刚刚解决了这个问题。 我在MSDN上find了解决scheme: http : //msdn.microsoft.com/en-us/library/ms155391.aspx 。

格式基本上是

 http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value> 

尝试更改“报告”到您的url“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调用此报告,您必须指定值而不是标签。
这将是错误的: http://服务器/报告服务器?/数据+词典/ DetailedInfo&视图名=产品&rs:Command =渲染

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

根据这个链接 ,如果不使用代理语法,你可能还必须用&rp作为前缀

尝试更改“报告”到“ReportServer”在您的url。 为此只需访问这个http://host/ReportServer/从那里你可以去报告页面。 在这里附加你的parmaters &<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/

Interesting Posts