2012-04-11 23 views
0

考虑这个SSRS值表达式:SSRS报告表达式 - null被视为零?

=IIF(First(Fields!MyCol.Value, "MyDataSet")=0, "yes", "no") 

MyCol是一个空的列。只有当MyCol等于0时才会输出“yes”。上面的代码在MyCol为0时正确评估为“yes”。但是,当MyCol为Nothing时(即SQL Server中为NULL),它也评估为“yes”。这是预期的行为?

我不得不求助于以下较长表达式得到期望的结果:

=IIF(Not(First(Fields!MyCol.Value, "MyDataSet") is Nothing) And First(Fields!MyCol.Value, "MyDataSet")=0, "yes", "no") 

有没有这个,它起一个较短的版本?

回答

1

看起来这只是由于VB.NET的工作原理,而不是由SSRS所做的任何事情造成的。

例如这里是一些直VB.NET代码:

Dim obj As Object = Nothing 

If (obj = 0) Then 
    MessageBox.Show("obj = 0 : true") 
End If 

If (obj Is Nothing) Then 
    MessageBox.Show("Obj is nothing") 
End If 

这在运行时会显示两个消息。