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

在SSRS查询字符串中传递多值参数的值

  •  5
  • Jamie  · 技术社区  · 16 年前

    我有两个使用SSR2005构建的报告。第一个报告设置为在单击特定字段时导航到第二个报告。我在文本框的“跳转到URL”属性中使用类似于以下内容的表达式:

    ="javascript:void(window.open('http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=" & Fields!Date.Value & "&MachineId=" & Fields!Machine.Value & "'))"
    

    第二个报表上有一个多值参数。调用此报表时,需要在URL查询字符串中为此参数传递多个值。是否有方法为报表的查询字符串中的参数传递多个值?或者,可以传递一个将导致选择“全选”值的参数吗?

    谢谢。

    3 回复  |  直到 9 年前
        1
  •  24
  •   Mitch    9 年前

    只需添加其他查询字符串参数。

    例如,传递参数

    Date:       2009-06-01
    MachineID:  Machine1, Machine2, Machine3, Machine4
    

    到一个名为 Folder\MyReport 在名为的服务器上 server ,您将使用以下URL:

    http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=2009-06-01&MachineId=Machine1&MachineId=Machine2&MachineId=Machine3&MachineId=Machine4
    
        2
  •  4
  •   Jeff Wu    15 年前

    使用 join(Parameters!<name>.Value,"&<param_name>=") 在多值参数的URL中。

    如果要将这些参数传递到数据集中,则需要执行 join(Parameters!<param name>.Value) 当您传入参数,然后在SQL中使用split函数时。这个很好用:

    ALTER FUNCTION [dbo].[fnSplitParam]
       (@RepParam nvarchar(4000), @Delim char(1)= ',')
    RETURNS @Values TABLE (Param nvarchar(4000))AS
      BEGIN
      DECLARE @chrind INT
      DECLARE @Piece nvarchar(100)
      SELECT @chrind = 1 
      WHILE @chrind > 0
        BEGIN
          SELECT @chrind = CHARINDEX(@Delim,@RepParam)
          IF @chrind  > 0
            SELECT @Piece = LEFT(@RepParam,@chrind - 1)
          ELSE
            SELECT @Piece = @RepParam
          INSERT  @Values(Param) VALUES(CAST(@Piece AS VARCHAR))
          SELECT @RepParam = RIGHT(@RepParam,LEN(@RepParam) - @chrind)
          IF LEN(@RepParam) = 0 BREAK
        END
      RETURN
      END
    

    如果最终用户不必直接选择参数,我建议使用单值方法,因为它在URL中为每个参数保存了2个字符。

        3
  •  0
  •   unhandled-exceptionally    9 年前

    我一直在尝试做一个类似的事情,发现把这个 &rp:mySelectAllParameter=<ALL> 在URL中工作以选择全部

    推荐文章