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