SSRS 2005:使用参数返回报告中的NULL值

时间:2012-07-31 14:44:00

标签: tsql reportingservices-2005

我有一个名为@vConsultant的参数,我在存储过程和SSRS报告中使用它。该参数是此查询填充的下拉菜单:

select distinct c.nameConsultant
from dataTable d

left join consultants c on d.nameConsultant= d.recID

“dataTable”是我的主数据表,用于存储顾问的ID。顾问是存储名称的表。

问题:在dataTable中,顾问是一个可选字段。而且,在报告中,我的用户不仅希望看到他们在SSRS下拉列表中选择的顾问,还希望看到NULL值(用户未指定顾问的位置)。但是,“NULL”不会在SSRS的下拉菜单中显示为值。

在存储过程中,当我想返回NULLS时,我使用where子句进行操作。所以......我的处理是:

CREATE PROCEDURE [dbo].[spReportProc] 

@vConsultant varchar(max) 

AS


BEGIN
    --Get comma-delimited list of consultants to allow SSRS multi-value select.
    Select @vConsultant = ',' + @vConsultant + ','

    create table #Consultant
        (
            nameConsultant varchar(1000)
        )
    Insert Into #Consultant 
    Select  nameConsultant
    From consultants
    Where @vConsultant Like  '%,' + nameConsultant ',%'
    And classification = 'Implementation Consultant'
    Group By nameConsultant


    Select * From dataTable d

    left join consultants c on d.nameConsultant= d.recID


    Where 
    @vConsultant Is NULL Or @vConsultant Like '%,' + i.firstName + ' ' + i.lastName + ',%') 
END

但是以这种方式指定NULL并不会在SSRS中被注意到。有没有办法在SSRS中允许NULL值而不实际指定NULL作为SSRS下拉列表的一部分?我已经尝试在SSRS中选中“允许空”和“允许空白”复选框,但这也不起作用。

如果需要进一步澄清,请与我们联系。谢谢!

2 个答案:

答案 0 :(得分:0)

单击vConsultant参数的参数属性并选中“允许空值”属性,然后单击“确定”。它将在报告参数中显示一个复选框,以选择值是null还是选定值。

答案 1 :(得分:0)

要解决多值下拉列表中的空值问题,我包含一个名为“ - Optional - ”的选项,然后在where子句中使用它而不是检查null。

所以你的第一个查询变为(改为内连接以确保没有空值):

select '-- Optional --'
union
select distinct c.nameConsultant
from dataTable d

inner join consultants c on d.nameConsultant= d.recID

并用以下代码替换过程中的where子句:

Where 
    @vConsultant != '-- Optional --' Or @vConsultant Like '%,' + i.firstName + ' ' + i.lastName + ',%')