Multi Select 选择显示全部时参数不显示记录,因为其中一个类别没有记录
Multi Select Parameter not diplaying records when display all is selected because one of the categories has no records
我有一个名为类别的报告参数,它是一个多 select 参数,具有(select 全部)类别 1、类别 2、类别 3。
@Category NVARCHAR(10)
Select ...
from dbo.item i
INNER JOIN dbo.ItemCategory AS ic ON i.Category = ic.Code
AND i.Category = @Category
有些项目属于类别 1,但其他两个项目还没有属于这些类别,以后会有。
当我 select select 全部在类别参数中而不是只显示类别 1 记录时,它什么也不显示,唯一显示内容的方法是如果我 select 单独的类别 1 复选框。我如何修复它以便在 select 全部 selected 时显示类别 1 中的类别项目?
已修复,参数将类别 1、类别 2、类别 3 作为一个字符串返回,因此我需要拆分字符串,以便传递各个类别而不是作为一个巨大的字符串。
AND i.Category IN (SELECT * FROM dbo.SplitString(@Category, ','))
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[SplitString]
(
@List nvarchar(4000),
@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
我有一个名为类别的报告参数,它是一个多 select 参数,具有(select 全部)类别 1、类别 2、类别 3。
@Category NVARCHAR(10)
Select ...
from dbo.item i
INNER JOIN dbo.ItemCategory AS ic ON i.Category = ic.Code
AND i.Category = @Category
有些项目属于类别 1,但其他两个项目还没有属于这些类别,以后会有。
当我 select select 全部在类别参数中而不是只显示类别 1 记录时,它什么也不显示,唯一显示内容的方法是如果我 select 单独的类别 1 复选框。我如何修复它以便在 select 全部 selected 时显示类别 1 中的类别项目?
已修复,参数将类别 1、类别 2、类别 3 作为一个字符串返回,因此我需要拆分字符串,以便传递各个类别而不是作为一个巨大的字符串。
AND i.Category IN (SELECT * FROM dbo.SplitString(@Category, ','))
SET QUOTED_IDENTIFIER ON
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[SplitString]
(
@List nvarchar(4000),
@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