2009-01-14 62 views
2

我在客戶端數據集中有一個Aggregate字段,如果客戶端數據集爲空,我使用函數來獲取聚合值,函數應該返回0TAggregateField.IsNull和(TAggregateField.Value = Null)有什麼區別

如果我這樣做:

if MyClientDataSet.AggregateField.IsNull then 
    Result := 0 
else 
    Result := MyClientDataSet.AggregateField.Value; 

當客戶端數據集爲空,則執行else部分並拋出一個異常(不能變轉換成外幣的錯誤)。

但如果我這樣做,這樣

if MyClientDataSet.AggregateField.Value = Null then 
    Result := 0 
else 
    Result := MyClientDataSet.AggregateField.Value; 

它工作正常!

所以我的問題是:什麼是IsNull屬性和比較值屬性與空值,在TAggregateField之間的區別?

回答

3

如果沒有記錄(數據集爲空),則沒有該值爲空的字段(從記錄緩衝區讀取),因此該字段的IsNull函數返回false。
在另一種情況下,您測試了您有一個null變體,它是數據集在GetAggregateValue中返回的內容。

+0

我有一個TClientDataset與一個記錄TAgregate.IsNull返回False甚至認爲唯一的記錄值是空 – EMBarbosa 2014-02-12 16:48:18

相關問題