Reporting services 手动输入多个参数,以逗号分隔

Reporting services 手动输入多个参数,以逗号分隔,reporting-services,parameters,ssrs-2008,reporting,ssrs-2008-r2,Reporting Services,Parameters,Ssrs 2008,Reporting,Ssrs 2008 R2,我有一个报表,可以将多个订单号作为参数,并为每个订单号返回一个子报表。目前,我有一个首先运行的查询,它用所有可能的订单号填充参数列表,您可以滚动并选择所需的订单号。我希望您只需输入顺序,并用逗号分隔。。我不知道如何设置这个。有人可以帮忙吗?您可以将参数数据类型设置为文本,然后创建拆分字符串函数,然后用户可以输入所有以逗号分隔的值 您的where子句如下所示- WHERE Parameter IN (SELECT * FROM dbo.Split_String( @Parameter, ','))

我有一个报表,可以将多个订单号作为参数,并为每个订单号返回一个子报表。目前,我有一个首先运行的查询,它用所有可能的订单号填充参数列表,您可以滚动并选择所需的订单号。我希望您只需输入顺序,并用逗号分隔。。我不知道如何设置这个。有人可以帮忙吗?

您可以将参数数据类型设置为文本,然后创建拆分字符串函数,然后用户可以输入所有以逗号分隔的值

您的where子句如下所示-

WHERE Parameter IN (SELECT * FROM dbo.Split_String( @Parameter, ','))
分割字符串函数-

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[Split_String]
(
@List nvarchar(max),
@token nvarchar(5)
)  
RETURNS @RtnValue table 
(
--Id int identity(1,1),
Value nvarchar(100)
) 
AS  
BEGIN

SET @List = RTRIM(LTRIM(@List))
IF @List <> '' 
BEGIN
    WHILE (CHARINDEX(@token, @List)>0)
    BEGIN 

        INSERT INTO @RtnValue (value)
        SELECT Value = LTRIM(RTRIM(SUBSTRING(@List,1,CHARINDEX(@token,@List)-1))) 

        SET @List = SUBSTRING(@List,CHARINDEX(@token,@List)+LEN(@token),LEN(@List))

    END 

    INSERT INTO @RtnValue (Value)
    SELECT Value = LTRIM(RTRIM(@List))
END

RETURN
END

GO
设置带引号的\u标识符
将ANSI_空值设置为ON
去
创建函数[dbo]。[Split_String]
(
@列出nvarchar(最大值),
@代币nvarchar(5)
)  
返回@RtnValue表
(
--Id int标识(1,1),
值nvarchar(100)
) 
作为
开始
设置@List=RTRIM(LTRIM(@List))
如果@List“”
开始
而(CHARINDEX(@token,@List)>0)
开始
插入@RtnValue(值)
选择Value=LTRIM(RTRIM(子字符串(@List,1,CHARINDEX(@token,@List)-1)))
设置@List=SUBSTRING(@List,CHARINDEX(@token,@List)+LEN(@token),LEN(@List))
结束
插入@RtnValue(值)
选择Value=LTRIM(RTRIM(@List))
结束
返回
结束
去

您可以将参数数据类型设置为文本,然后创建拆分字符串函数,然后用户可以输入以逗号分隔的所有值

您的where子句如下所示-

WHERE Parameter IN (SELECT * FROM dbo.Split_String( @Parameter, ','))
分割字符串函数-

SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[Split_String]
(
@List nvarchar(max),
@token nvarchar(5)
)  
RETURNS @RtnValue table 
(
--Id int identity(1,1),
Value nvarchar(100)
) 
AS  
BEGIN

SET @List = RTRIM(LTRIM(@List))
IF @List <> '' 
BEGIN
    WHILE (CHARINDEX(@token, @List)>0)
    BEGIN 

        INSERT INTO @RtnValue (value)
        SELECT Value = LTRIM(RTRIM(SUBSTRING(@List,1,CHARINDEX(@token,@List)-1))) 

        SET @List = SUBSTRING(@List,CHARINDEX(@token,@List)+LEN(@token),LEN(@List))

    END 

    INSERT INTO @RtnValue (Value)
    SELECT Value = LTRIM(RTRIM(@List))
END

RETURN
END

GO
设置带引号的\u标识符
将ANSI_空值设置为ON
去
创建函数[dbo]。[Split_String]
(
@列出nvarchar(最大值),
@代币nvarchar(5)
)  
返回@RtnValue表
(
--Id int标识(1,1),
值nvarchar(100)
) 
作为
开始
设置@List=RTRIM(LTRIM(@List))
如果@List“”
开始
而(CHARINDEX(@token,@List)>0)
开始
插入@RtnValue(值)
选择Value=LTRIM(RTRIM(子字符串(@List,1,CHARINDEX(@token,@List)-1)))
设置@List=SUBSTRING(@List,CHARINDEX(@token,@List)+LEN(@token),LEN(@List))
结束
插入@RtnValue(值)
选择Value=LTRIM(RTRIM(@List))
结束
返回
结束
去

您是否尝试在参数中使用多值选项

设置参数 设置一个简单的通用参数,如下图所示:

关键组件是允许多个值选项,该选项允许您在参数中键入多个文本值

更新数据集 然后在数据集中,确保像这样添加
WHERE
子句

WHERE orders.ordernumber IN (@OrderNumbers)
这将确保您的数据被过滤到输入的订单号。比较中的
非常重要,因为
@OrderNumbers
参数可以包含多个值。多值参数也被视为集合/数组,因此尝试使用
=
将导致类型不匹配

测试 数据输入与您希望的略有不同,因为我们将使用回车符来分隔订单号,而不是逗号

但是,当文本框失去焦点时,它会将文本的外观重新格式化为逗号


请注意:您需要先选择下拉箭头,然后才能开始在文本框中键入内容。无法在参数下拉列表折叠的情况下键入值。

是否尝试在参数中使用多个值选项

设置参数 设置一个简单的通用参数,如下图所示:

关键组件是允许多个值选项,该选项允许您在参数中键入多个文本值

更新数据集 然后在数据集中,确保像这样添加
WHERE
子句

WHERE orders.ordernumber IN (@OrderNumbers)
这将确保您的数据被过滤到输入的订单号。比较中的
非常重要,因为
@OrderNumbers
参数可以包含多个值。多值参数也被视为集合/数组,因此尝试使用
=
将导致类型不匹配

测试 数据输入与您希望的略有不同,因为我们将使用回车符来分隔订单号,而不是逗号

但是,当文本框失去焦点时,它会将文本的外观重新格式化为逗号


请注意:您需要先选择下拉箭头,然后才能开始在文本框中键入内容。不能在参数下拉列表折叠的情况下键入值。

可以使用两个参数,一个是内部参数,另一个是可见参数。对于可见参数,请使用文本数据类型。确保用户键入以逗号分隔的订单号。然后在内部参数中,在内部参数上使用逗号分隔()。将内部参数传递给要筛选的查询。有关进一步帮助,请编辑您的问题并包含更多详细信息。您可以使用两个参数,一个是内部参数,另一个是可见参数。对于可见参数,请使用文本数据类型。确保用户键入以逗号分隔的订单号。然后在内部参数中,在内部参数上使用逗号分隔()。将内部参数传递给要筛选的查询。有关更多帮助,请编辑您的问题并包含更多详细信息。