delphi - TAggregateField.IsNull 和 (TAggregateField.Value = Null) 之间有什么区别

标签 delphi

我在客户端数据集中有一个聚合字段,我使用一个函数来获取聚合值,如果客户端数据集为空,则该函数应返回 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/

相关文章:

ruby-on-rails - 在 Mac OS X 上的 Ruby on Rails 中使用 Delphi

delphi - Delphi 中的 trie 实现?

delphi - 如何在 TZFProcessFileFailureEvent 中使用 fxaIgnore

json - 写入 json 文本

delphi - 如何在运行时隐藏组件?

德尔福2009 : How to communicate between Windows service & desktop application under Vista?

delphi - 使用Delphi XE5获取Android和iOS中的SD卡和可执行路径

delphi - 升级到 Delphi 10.4 Sydney 时缺少 ToolsAPI 接口(interface)方法的实现

delphi - Delphi 中枚举一条记录

delphi - 如何强制 SConscript 构建器更改目录?