通过 url 将参数传递给 sql server 报告服务
Posted
技术标签:
【中文标题】通过 url 将参数传递给 sql server 报告服务【英文标题】:Passing parameter via url to sql server reporting service 【发布时间】:2010-11-07 21:50:09 【问题描述】:我正在尝试通过 url 将参数传递给 s-s-rS,但它似乎不起作用!
我正在尝试通过 url 传递 userId(字符串),该 url 将传递给数据库并供查询使用。
基本网址: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport
试过这个,但它不起作用: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport&UserId=fred
任何想法
【问题讨论】:
问题是我试图通过“静态”网址访问报告,此网址仅显示已生成的报告,它不会生成“动态”报告 - 如果你想要这个,你有使用类似 'http://我有同样的问题和更多问题,虽然这个线程很旧,但它仍然是一个很好的问题,所以总结一下 s-s-rS 2008R2 我发现......
情况
-
您想使用 URL 中的值来查找数据
您希望在报表中显示来自 URL 的参数
您希望将参数从一个报表传递到另一个报表
操作
如果适用,请务必将 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 (reference)
将所有这些放在一起,您可以运行带有嵌入值的 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
【讨论】:
工具栏上的不错=false,正是我想要的。 我缺少的部分是必须将ItemPath
替换为 ReportServer?
。我在任何地方都找不到这个记录!感谢您为我节省了数小时的挫败感!【参考方案2】:
除了设拉子所说的,试试这样的:
http://<server>/ReportServer/Pages/ReportViewer.aspx?%2f<path>%2f<ReportName>&rs:Command=Render&UserID='fred'
请注意,仅当您位于单个文件夹中时,该路径才有效。当我必须这样做时,我只需使用报表服务器路径(“reports”是报表管理器)浏览到报表并复制 url,然后将 &<ParameterName>=<value>
添加到末尾。
【讨论】:
如果我想通过 @Model 之类的方式传递动态参数怎么办 @selectDistinct:很久以前,我知道。但是我只是偶然发现了这篇文章并想添加它以传递动态参数,您只需添加另一个 URL 参数:例如。 “&Model=”。不要忘记前面的 &。最后一件事:如果您想立即触发报告的“渲染”,请添加“&rs:command=Render”选项。在这里,请确保所有自定义参数都设置了默认值。否则,渲染命令将被忽略。 (我为此苦苦挣扎,b/c 我想在 .NET 应用程序中集成一个报告,其中整个 URL 是用代码构建的,以便直接显示报告)。 我想通了...确保没有包含字符串,即:而不是 &ProjectName='Unknown' 它应该是 &ProjectName=Unknown【参考方案3】:我自己刚刚解决了这个问题。我在 MSDN 上找到了解决方案: http://msdn.microsoft.com/en-us/library/ms155391.aspx.
格式基本是
http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
【讨论】:
【参考方案4】:尝试在您的 url 中将“Reports”更改为“ReportServer”
【讨论】:
【参考方案5】:尝试通过 url 传递多个值:
/ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
这应该可行。
【讨论】:
【参考方案6】:我通过在 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
【讨论】:
【参考方案7】:根据link,如果不使用代理语法,您可能还必须在参数前加上 &rp 前缀
【讨论】:
【参考方案8】:尝试在您的网址中将“报告”更改为“报告服务器”。
为此,只需访问此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/
【讨论】:
【参考方案9】:http://desktop-qr277sp/Reports01/report/Reports/reportName?Log%In%Name=serverUsername¶mName=value
通过服务器身份验证将参数传递给报表
【讨论】:
你的回答质量很差,以上是关于通过 url 将参数传递给 sql server 报告服务的主要内容,如果未能解决你的问题,请参考以下文章
将 xml 作为参数传递给 SQL Server 中的存储过程
使用 PHP PDO 将参数传递给 SQL Server 存储过程