Tsql SSRS 2005:在带有参数的报表中返回空值
我有一个名为@vConsultant的参数,我在存储过程和SSRS报告中使用它。该参数是由此查询填充的下拉菜单: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下拉
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 + ',%')