首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用FireDac集合

使用FireDac集合
EN

Stack Overflow用户
提问于 2014-07-28 20:15:51
回答 1查看 2.1K关注 0票数 3

我将XE6与FireDac结合使用。我有一个FDMemTable,ItemVals作为ftfloat字段。我想使用SUM的聚合函数( ItemVals ),但是我只希望添加值>0的ItemVals。ItemVals是一个ftfloat,但就我所能找到的而言,我不能将一个空值赋值给float。因此,我使用-1的值来表示空值。我尝试了SUM(ItemVals)>0,但它只返回一个TRUE。谁能给我指明正确的方向?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-29 07:17:04

您可以使用extended expression syntaxSUM表达式条件编写IIF,并在字段值大于0时返回字段值,当字段小于或等于0时返回字段值。就像这样:

代码语言:javascript
复制
Aggregate.Expression := 'SUM(IIF(ItemVals > 0, ItemVals, 0))';

但回到你问题的根源。您已经说过,您无法找到将空值赋给ftFloat数据类型字段的方法。我猜你是这样赋值的:

代码语言:javascript
复制
FDMemTable.FieldByName('ItemVals').AsFloat := 1.23;

是的,这样实际上不能赋值空值,但是可以通过字段的Value属性来实现,例如:

代码语言:javascript
复制
FDMemTable.FieldByName('ItemVals').Value := NULL;

指定NULL值而不是-1将更好地描述无值的意图,并将聚合表达式简化为SUM(ItemVals)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25003563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档