允许空字符串用于SSRS多值参数

时间:2013-11-24 19:13:22

标签: sql stored-procedures reporting-services parameters

我有一个SSRS报告,它将一些多值报告参数传递给存储过程以构建报告。当选择该选项时,我无法返回空字符串的值。正如您所看到的下拉列表中有一个空字符串选项,肯定会在选中此空字段时返回行。该参数设置为允许空白值。该参数在数据集的参数选项中具有逗号连接。我还有一个单独的表值函数,当我试图在查询中搜索特定参数时调用它。

这是我在报告参数中选择的地方:

where car.Cars in (SELECT  Val from [dbo].[fn_String](@localCars,',',1))

继续调用函数来将SSRS参数值拆分为单独的字符串值:

ALTER FUNCTION [dbo].[fn_String] (
        @String VARCHAR(max), 
@Delimeter char(1),   
@TrimSpace bit )    
RETURNS @Table TABLE ( [Val] VARCHAR(500) )
AS
BEGIN
DECLARE @Val    VARCHAR(500)
WHILE LEN(@String) > 0
BEGIN
    SET @Val    = LEFT(@String,
         ISNULL(NULLIF(CHARINDEX(@Delimeter, @String) - 1, -1),
         LEN(@String)))
    SET @String = SUBSTRING(@String,
         ISNULL(NULLIF(CHARINDEX(@Delimeter, @String), 0),
         LEN(@String)) + 1, LEN(@String))
IF @TrimSpace = 1 Set @Val = LTRIM(RTRIM(@Val))
INSERT INTO @Table ( [Val] )
    VALUES ( @Val )
 END
 RETURN
 END

1 个答案:

答案 0 :(得分:1)

几周前我遇到了同样的麻烦。你确定你传入的每个参数都有JOIN。那是我的错误,我忘记了一两个。 JOIN(参数!paramName.value, “”)