none
当where字句中使用LIKE运算符时,如何将多值参数传递给一个数据集dataset? RRS feed

  • 常规讨论

  • 解决方案

    1. 在数据库中运行以下代码,创建一个分割字符串并放入表中的表值函数。
    CREATE FUNCTION [dbo].[fn_String_To_Table] (
    @String VARCHAR(max),
    @Delimeter char(1),
    @TrimSpace bit )
    RETURNS @Table TABLE ( [Val] VARCHAR(4000) )
    AS
    BEGIN
    DECLARE @Val VARCHAR(4000)
    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

    2. 在您的报表中,定义一个单值的内部参数MPjoin,而且必须用以下表达式设置其默认值:=Join(Parameters!rptParameter.Value,",").

    3. 更改数据集dataset查询字符串为:
    SELECT T1.Col1,T1.Col2,T1.Title
    FROM myTable T1 INNER JOIN fn_String_To_Table(@MPjoin,',',1) T2
    ON T1.Title LIKE T2.Val+ '%'

    4. 打开数据集dataset属性,在该属性窗口中,点击“参数”进入到数据集参数页,确保@MPjoin的值传自@MPjoin

    表达式=Join(Parameters!rptParameter.Value,",").

    2011年11月30日 1:49
    版主