我将XE6与FireDac结合使用。我有一个FDMemTable,ItemVals作为ftfloat字段。我想使用SUM的聚合函数( ItemVals ),但是我只希望添加值>0的ItemVals。ItemVals是一个ftfloat,但就我所能找到的而言,我不能将一个空值赋值给float。因此,我使用-1的值来表示空值。我尝试了SUM(ItemVals)>0,但它只返回一个TRUE。谁能给我指明正确的方向?谢谢。
发布于 2014-07-29 07:17:04
您可以使用extended expression syntax为SUM表达式条件编写IIF,并在字段值大于0时返回字段值,当字段小于或等于0时返回字段值。就像这样:
Aggregate.Expression := 'SUM(IIF(ItemVals > 0, ItemVals, 0))';但回到你问题的根源。您已经说过,您无法找到将空值赋给ftFloat数据类型字段的方法。我猜你是这样赋值的:
FDMemTable.FieldByName('ItemVals').AsFloat := 1.23;是的,这样实际上不能赋值空值,但是可以通过字段的Value属性来实现,例如:
FDMemTable.FieldByName('ItemVals').Value := NULL;指定NULL值而不是-1将更好地描述无值的意图,并将聚合表达式简化为SUM(ItemVals)。
https://stackoverflow.com/questions/25003563
复制相似问题