考虑这个SSRS值表达式:
=IIF(First(Fields!MyCol.Value, "MyDataSet")=0, "yes", "no")
MyCol是一个Nullable列。我希望仅当MyCol等于0时才输出“是”。当MyCol为0时,上面的代码正确评估为“是”。但是,当MyCol为Nothing时(即SQL Server中为NULL),它也会评估为“是”。这是预期的行为吗?
我不得不求助于以下更长的表达式来获得所需的结果:
=IIF(Not(First(Fields!MyCol.Value, "MyDataSet") is Nothing) And First(Fields!MyCol.Value, "MyDataSet")=0, "yes", "no")
是否有更短的版本也可以使用?
答案 0 :(得分:1)
看起来这只是因为VB.NET是如何工作的,而不是SSRS所做的任何事情造成的。
e.g。这是一些直接的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
这会在运行时显示两条消息。