2009-01-14 96 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