代码之家  ›  专栏  ›  技术社区  ›  AwkwardCoder

通过URL将参数传递给SQL Server Reporting Service

  •  39
  • AwkwardCoder  · 技术社区  · 15 年前

    我试图通过URL将一个参数传递给ssrs,但它似乎不起作用!

    我正在尝试通过URL传递一个用户ID(字符串),该URL将被传递到数据库并由查询使用。

    基本URL: http://blah/Reports/Pages/Report.aspx?ItemPath=MyReport

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

    任何想法

    8 回复  |  直到 7 年前
        1
  •  46
  •   Ian Kemp    12 年前

    除了西拉所说的之外,还可以尝试这样的方法:

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

    注意,只有在单个文件夹中时,路径才有效。当我必须这样做时,我只需使用ReportServer路径(“Reports”是报表管理器)浏览到报表,复制URL,然后添加 &<ParameterName>=<value> 到最后。

        2
  •  49
  •   snyderj    11 年前

    我有同样的问题和更多,虽然这个线程是旧的,但它仍然是一个好的线程,所以在总结SSR2008R2时,我发现…

    情况

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

    行动

    如果适用,请务必更换 报告/页面/report.aspx?项目路径= 具有 报告服务器? . 换言之: 而不是这个:

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

    使用此语法:

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

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

    使用&parametername=value将参数附加到URL

    无论参数是在报表中还是在URL中设置的,都可以使用@parametername在报表中引用或显示参数。

    要隐藏显示参数的工具栏,请将&rc:toolbar=false添加到URL( reference )

    综上所述,您可以运行带有嵌入值的URL,或者将其作为一个操作从一个报表调用并由另一个报表读取:

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

    在报表数据集属性查询中:从user=@userid的视图中选择内容

    在报告中,将表达式值设置为[userid](或=字段!用户标识值

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

    要使用action=go to url传递参数,请将expression设置为:

    ="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

        3
  •  8
  •   ccellar Mark Brackett    13 年前

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

    格式基本上是

    http://<server>/reportserver?/<path>/<report>&rs:Command=Render&<parameter>=<value>
    
        4
  •  6
  •   Shiraz Bhaiji    15 年前

    尝试在URL中将“reports”更改为“reportserver”

        5
  •  3
  •   Factor Mystic    13 年前

    尝试通过URL传递多个值:

    /ReportServer?%2fService+Specific+Reports%2fFilings%2fDrillDown%2f&StartDate=01/01/2010&EndDate=01/05/2010&statuses=1&statuses=2&rs%3AFormat=PDF
    

    这应该有效。

        6
  •  1
  •   RonG    9 年前

    我通过在URL中传递可用参数的值而不是参数的标签来解决了类似的问题。

    例如,我有一个带有参数viewname的报表,该参数的预定义可用值为:(标签/值)orders/sub_orders、orderdetail/sub_orderdetail、product/sub_product。

    若要使用URL调用此报表以自动呈现参数=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
  •  0
  •   majjam    8 年前

    按照这个 link 如果不使用代理语法,还可能需要在参数前面加上&rp;前缀。

        8
  •  0
  •   Floern    7 年前

    尝试在URL中将“reports”更改为“reportserver”。 为此,只需访问这个 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/