2009-09-01 27 views
1

类似这样的问题:linkSRS报告:URL参数,多值

不过,我已经掌握了。我的问题是我们在工作中添加的新报告具有参数值(即:10-新,20-取消,30-完成)。对于我的生活,我无法弄清楚如何传递相同参数的多个值。 (所以从前面的例子中,选择10-New和30-Complete作为参数值)。

可以这样做吗?如果是这样,怎么样?

回答

1

我相信你和其他报告一样,你只需用逗号分隔你的列表(即10,20),这就是为什么你需要一个函数来将你的逗号分隔的字符串分割成你的where子句的表(听起来像你已经覆盖了这个)

+0

等等,什么? SQL Report Service服务器有一个报告查看器URL(如果您不确定我在说什么,请参阅其他文章),它会自动分析具有内置例程的参数以显示报告。我无法控制这一点。我试过一个逗号,但它不接受。 – RiddlerDev

+0

如果您将SQL存储在报告中,则不必担心。如果您已将其存储在存储过程中,则SSRS会将逗号分隔字符串中的多值参数传入,然后您必须将其解析出或转换为表格。 http://msdn.microsoft.com/en-us/library/aa337396%28SQL.90%29.aspx – CodeMonkey1313

+0

这是奇怪的,仍然无法正常工作,但那是我无法追查的文章。我会将此转回给我们的报告团队。谢谢。 – RiddlerDev

0

如果你传递多个值到一个参数,首先确保参数被标记为允许多个值。

然后在您的查询中,确保您使用某种拆分功能来分隔出字符串。

0

您不必拆分它。您可以执行下列操作...
确保在逗号delim中的第一部,也是最后的值加引号(我使用UDF做到这一点)

IF CHARINDEX(',', @Param) <> 1 SET @Value = ',' + @Value   
IF CHARINDEX(',', REVERSE(@Value)) <> 1 SET @Value = @Value + ',' 

然后,附上您字段将逗号和外卡的表达进行过滤,并使用LIKE比较,筛选条款等

SELECT 
    t.Field1, 
    t.Field2 
FROM 
    dbo.Table1 t 
WHERE 
    '%,' + t.Field + ',%' LIKE @Parm 

作品就像任何字符串字段一个梦想,但可能很麻烦的日期和整数等
然后,您还必须将您正在筛选的字段CAST投射到VARCHAR。