TAggregateField.IsNull和(TAggregateField.Value = Null)有什么区别

时间:2009-01-14 02:44:56

标签: delphi

我在客户端数据集中有一个Aggregate字段,我使用一个函数来获取聚合值,如果客户端数据集为空,则该函数应返回0.

如果我这样做:

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

当客户端数据集为空时,执行else部分并引发异常(无法将Variant转换为Currency错误)。

但如果我这样做的话

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

它工作正常!

所以我的问题是:在一个TAggregateField中,IsNull属性和将Value属性与Null值进行比较有什么区别?

1 个答案:

答案 0 :(得分:3)

如果没有记录(数据集为空),则没有值为null的字段(从记录缓冲区读取),因此字段的IsNull函数返回false。 在另一种情况下,您测试您有一个null变量,这是数据集在GetAggregateValue中返回的。