2012-04-11 24 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 

這在運行時會顯示兩個消息。