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

Awk*_*der 40 parameters url reporting reportingservices-2005 reporting-services

我正在尝试通过URL将参数传递给SSRS,它似乎无法正常工作!

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

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

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

有任何想法吗

sny*_*erj 54

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

情况

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

操作

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

http://server/Reports/Pages/Report.aspx?ItemPath=/ReportFolder/ReportSubfolder/ReportName
Run Code Online (Sandbox Code Playgroud)

使用以下语法:

http://server/ReportServer?/ReportFolder/ReportSubfolder/ReportName
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

将所有内容放在一起,您可以运行带有嵌入值的URL,或者将其作为一个操作从一个报表中调用,并由另一个报表读取:

http://server.domain.com/ReportServer?/ReportFolder1/ReportSubfolder1/ReportName&UserID=ABC123&rc:Toolbar=false
Run Code Online (Sandbox Code Playgroud)

在报表数据集属性中查询: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"
Run Code Online (Sandbox Code Playgroud)

请确保在表达式后面有空格,如果后跟&(换行符不够).表达式之前不需要空格.此方法可以传递参数但不会隐藏它,因为它在URL中可见.

如果未包含&rs:ClearSession = True,则在清除浏览器会话高速缓存之前,报告不会刷新.

使用Action = Go to report传递参数:

  • 指定报告
  • 添加参数以运行报告
  • 添加您希望传递的参数(需要在目标报告中定义参数,因此据我所知,您不能使用特定于URL的命令,例如使用此方法的rc:toolbar); 但是,我认为可以通过报告中的自定义代码读取或设置"提示用户"复选框,如报告服务器参数中所示.)

作为参考,/ =%2f


Moz*_*ozy 46

除了Shiraz所说的,尝试这样的事情:

http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
Run Code Online (Sandbox Code Playgroud)

请注意,只有在单个文件夹中时,路径才有效.当我必须这样做时,我只需使用reportserver路径浏览报告("reports"是报告管理器)并复制url然后添加&<ParameterName>=<value>到结尾.

  • @selectDistinct:很久以前,我知道.但我只是偶然发现了这篇文章并希望添加它以传递动态参数,你只需添加另一个URL参数:例如."&模型= <值>".别忘了&在前面.最后一点:如果你想立即触发报告的"渲染",你可以添加"&rs:command = Render"选项.在这里,DO确保所有自定义参数都设置了默认值.否则,将忽略Render命令.(我很沮丧,b/c我想在.NET应用程序中集成一个报告,整个URL都是用代码构建的,用于直接显示报告). (2认同)

小智 8

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

格式基本上是

http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
Run Code Online (Sandbox Code Playgroud)


Shi*_*iji 6

尝试在您的网址中将"报告"更改为"ReportServer"