我在客户端数据集中有一个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值进行比较有什么区别?
答案 0 :(得分:3)
如果没有记录(数据集为空),则没有值为null的字段(从记录缓冲区读取),因此字段的IsNull函数返回false。 在另一种情况下,您测试您有一个null变量,这是数据集在GetAggregateValue中返回的。