Tsql SSRS 2005:在带有参数的报表中返回空值

Tsql SSRS 2005:在带有参数的报表中返回空值,tsql,reportingservices-2005,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下拉

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

select distinct c.nameConsultant
from dataTable d

left join consultants c on d.nameConsultant= d.recID
“dataTable”是我的主数据表,用于存储顾问的ID。顾问是存储名称的表

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

在存储过程中,当我想要返回null时,我使用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中的空值,而不在SSRS下拉列表中实际指定空值?我曾尝试在SSRS中选择“允许空”和“允许空白”复选框,但这也不起作用


如果需要更多的澄清,请告诉我。谢谢

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

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

因此,您的第一个查询变成(更改为内部联接以确保没有空值):

并将程序中的where子句替换为:

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

不幸的是,我不能这样做,因为我的下拉列表是一个“多值”属性,SSRS不允许您同时选中这两个复选框(或者,它至少不允许我…)我接受了这一点,但我做了修改-因此,不确定这是否是放置此项的正确位置,但是。。。最后,我确实使用您的union在下拉列表中创建了一个新的可选字段,但我也这样做了:声明@vAllowBlanks选择@vAllowBlanks=IsNull(Charindex(',(可选),',@vConsultant),0),然后在where子句中:(@vConsultantLike','+I.firstName+'+I.lastName+,%)或(@vConsultant=1,i.firstName+''+i.lastName为空)
Where 
    @vConsultant != '-- Optional --' Or @vConsultant Like '%,' + i.firstName + ' ' + i.lastName + ',%')