Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TAggregateField.IsNull和(TAggregateField.Value=Null)之间有什么区别_Delphi - Fatal编程技术网

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

Delphi TAggregateField.IsNull和(TAggregateField.Value=Null)之间有什么区别,delphi,Delphi,我在客户机数据集中有一个聚合字段,我使用一个函数来获取聚合值,如果客户机数据集为空,则函数应返回0 如果我这样做: if MyClientDataSet.AggregateField.IsNull then Result := 0 else Result := MyClientDataSet.AggregateField.Value; 当客户端数据集为空时,执行else部分并引发异常(无法将变量转换为货币错误) 但是如果我这样做的话 if MyClientDataSet.Aggre

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

如果我这样做:

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;
很好用

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

当您没有记录(数据集为空)时,您没有值为Null的字段(从记录缓冲区读取),因此字段的IsNull函数返回false。

在另一种情况下,您测试是否有一个null变量,这是数据集在GetAggregateValue中返回的变量。

我有一个TClientDataset,其中有一条记录TAgregate.IsNull返回False,即使唯一的记录值为null