Reporting services 手动输入多个参数,以逗号分隔
我有一个报表,可以将多个订单号作为参数,并为每个订单号返回一个子报表。目前,我有一个首先运行的查询,它用所有可能的订单号填充参数列表,您可以滚动并选择所需的订单号。我希望您只需输入顺序,并用逗号分隔。。我不知道如何设置这个。有人可以帮忙吗?您可以将参数数据类型设置为文本,然后创建拆分字符串函数,然后用户可以输入所有以逗号分隔的值 您的where子句如下所示-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 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
参数可以包含多个值。多值参数也被视为集合/数组,因此尝试使用=
将导致类型不匹配
测试
数据输入与您希望的略有不同,因为我们将使用回车符来分隔订单号,而不是逗号
但是,当文本框失去焦点时,它会将文本的外观重新格式化为逗号
请注意:您需要先选择下拉箭头,然后才能开始在文本框中键入内容。不能在参数下拉列表折叠的情况下键入值。可以使用两个参数,一个是内部参数,另一个是可见参数。对于可见参数,请使用文本数据类型。确保用户键入以逗号分隔的订单号。然后在内部参数中,在内部参数上使用逗号分隔()。将内部参数传递给要筛选的查询。有关进一步帮助,请编辑您的问题并包含更多详细信息。您可以使用两个参数,一个是内部参数,另一个是可见参数。对于可见参数,请使用文本数据类型。确保用户键入以逗号分隔的订单号。然后在内部参数中,在内部参数上使用逗号分隔()。将内部参数传递给要筛选的查询。有关更多帮助,请编辑您的问题并包含更多详细信息。