我正在使用XE6和FireDac。我有一个带有ItemVals的FDMemTable作为ftfloat字段。我想使用SUM(ItemVals)的聚合函数,但我想只添加值为> 0的ItemVals .ItemVals是ftfloat但是据我所知,我不能为a赋值空值浮动。所以我使用值-1来表示(对我来说)一个空值。我尝试了SUM(ItemVals)> 0但它只返回一个TRUE。谁能指出我正确的方向?感谢。
答案 0 :(得分:3)
您可以使用extended expression syntax
并使用SUM
为IIF
表达式条件写入,并在大于0时返回字段值,在小于或等于0时返回0。这样:
Aggregate.Expression := 'SUM(IIF(ItemVals > 0, ItemVals, 0))';
但回到问题的根源。您已经说过,您无法找到为ftFloat
数据类型的字段分配NULL值的方法。我的猜测是你以这种方式分配价值:
FDMemTable.FieldByName('ItemVals').AsFloat := 1.23;
是的,这样你真的无法分配NULL值,但你可以通过字段的Value
属性来完成,例如:
FDMemTable.FieldByName('ItemVals').Value := NULL;
分配NULL值而不是-1将更好地描述无值的意图,并将聚合表达式简化回SUM(ItemVals)
。