我在客户端数据集中有一个聚合字段,我使用一个函数来获取聚合值,如果客户端数据集为空,则该函数应返回 0。
如果我这样做:
if MyClientDataSet.AggregateField.IsNull then
Result := 0
else
Result := MyClientDataSet.AggregateField.Value;
当客户端数据集为空时,执行 else 部分并引发异常(无法将 Variant 转换为货币错误)。
但如果我这样做
if MyClientDataSet.AggregateField.Value = Null then
Result := 0
else
Result := MyClientDataSet.AggregateField.Value;
效果很好!
所以我的问题是:在 TAggregateField 中,IsNull 属性与将 Value 属性与 Null 值进行比较有什么区别?
最佳答案
当您没有记录(数据集为空)时,您没有值为空的字段(从记录缓冲区读取),因此该字段的 IsNull 函数返回 false。
在另一种情况下,您测试是否有一个空变体,这是数据集在 GetAggregateValue 中返回的内容。
关于delphi - TAggregateField.IsNull 和 (TAggregateField.Value = Null) 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/441743/