Передача значений многозначного параметра в строке запроса SSRS
У меня есть два отчета, построенных с использованием SSRS 2005. Первый отчет настраивается на переход ко второму при щелчке по определенному полю. Я использую выражение, подобное следующему в свойстве "перейти к URL" текстового поля:
="javascript:void(window.open('http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=" & Fields!Date.Value & "&MachineId=" & Fields!Machine.Value & "'))"
Во втором отчете присутствует многозначный параметр. Мне нужно передать несколько значений для этого параметра в строке запроса URL при вызове этого отчета. Можно ли передать несколько значений параметра в строке запроса отчета? Или можно ли передать параметр, который вызовет выбор значения Select All?
Спасибо.
3 ответа:
Просто добавьте дополнительные параметры строки запроса.
Например, для передачи параметров
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
Используйте
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.