Delphi TAggregateField.IsNull和(TAggregateField.Value=Null)之间有什么区别
我在客户机数据集中有一个聚合字段,我使用一个函数来获取聚合值,如果客户机数据集为空,则函数应返回0 如果我这样做: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
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