Передача значений для многозначного параметра в строке запроса SSRS - PullRequest
5 голосов
/ 11 августа 2009

У меня есть два отчета, построенных с использованием SSRS 2005. Первый отчет настроен для перехода ко второму при щелчке определенного поля. Я использую выражение, подобное следующему, в свойстве «Перейти к URL» текстового поля:

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

Во втором отчете есть многозначный параметр. Мне нужно передать несколько значений для этого параметра в строке запроса URL при вызове этого отчета. Есть ли способ передать несколько значений параметра в строке запроса отчета? Или вы можете передать параметр, который приведет к выбору значения «Выбрать все»?

Спасибо.

Ответы [ 3 ]

26 голосов
/ 11 августа 2009

Просто добавьте дополнительные параметры строки запроса.

Например, для передачи параметров

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
4 голосов
/ 10 декабря 2010

Используйте join(Parameters!<name>.Value,"&<param_name>=") в URL для многозначных параметров.

Если вы передаете эти параметры в набор данных, вам нужно сделать join(Parameters!<param name>.Value) при передаче параметра, а затем использовать функцию разделения в SQL. Этот работает хорошо:

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

Я рекомендую использовать метод с одним значением, если конечный пользователь не должен выбирать параметры напрямую, поскольку он экономит 2 символа на параметр в URL.

0 голосов
/ 29 июля 2016

Я пытался сделать то же самое, что и OP, и обнаружил, что помещение этого &rp:mySelectAllParameter=<ALL> в URL работает, чтобы выбрать все

...