Jam*_*mie 6 reportingservices-2005 reporting-services
我有两个使用SSRS 2005构建的报告.第一个报告设置为在单击特定字段时导航到第二个报告.我在文本框的"跳转到URL"属性中使用类似于以下内容的表达式:
="javascript:void(window.open('http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=" & Fields!Date.Value & "&MachineId=" & Fields!Machine.Value & "'))"
Run Code Online (Sandbox Code Playgroud)
第二个报告上有一个多值参数.调用此报告时,我需要在URL查询字符串中为此参数传递多个值.有没有办法在报表的查询字符串中为参数传递多个值?或者您可以传递一个参数,该参数将导致选择全部选择值吗?
谢谢.
Mit*_*tch 27
只需添加其他查询字符串参数.
例如,传递参数
Date: 2009-06-01
MachineID: Machine1, Machine2, Machine3, Machine4
Run Code Online (Sandbox Code Playgroud)
对于在名为Folder\MyReport
server的服务器上命名的报告server
,您将使用以下URL:
http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=2009-06-01&MachineId=Machine1&MachineId=Machine2&MachineId=Machine3&MachineId=Machine4
Run Code Online (Sandbox Code Playgroud)
使用join(Parameters!<name>.Value,"&<param_name>=")
的URL中多值参数。
如果要将这些参数传递到数据集中,则需要join(Parameters!<param name>.Value)
在传递参数时执行a ,然后在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
Run Code Online (Sandbox Code Playgroud)
如果最终用户不必直接选择参数,我建议使用单值方法,因为这样可以在url中为每个参数节省2个字符。