【问题标题】:Multi Select Parameter not diplaying records when display all is selected because one of the categories has no records选择显示全部时,多选参数不显示记录,因为其中一个类别没有记录
【发布时间】:2015-03-11 15:57:10
【问题描述】:

我有一个名为 Category 的报告的参数,它是一个多选参数,包含(全选)类别 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 的项目,但其他两个还没有属于这些类别的项目,它们将来会有。

当我在类别参数中选择全选而不是只显示类别 1 记录时,它什么也不显示,它显示内容的唯一方法是我单独选择类别 1 复选框。如何修复它,以便在选择全选时显示类别 1 中的类别项目?

【问题讨论】:

  • 您能否向我们提供一些示例数据的 DDL ?即使是 3 行也可以,这样我们更容易测试。

标签: tsql reporting-services parameters ssrs-2008-r2


【解决方案1】:

修复它,参数将 category1、category2、category3 全部作为一个字符串返回,所以我需要拆分字符串以便传递各个类别,而不是作为一个巨大的字符串。

  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    相关资源
    最近更新 更多