gpt4 book ai didi

delphi - 使用 FireDac 聚合

转载 作者:行者123 更新时间:2023-12-03 15:54:36 26 4
gpt4 key购买 nike

我正在将 XE6 与 FireDac 一起使用。我有一个 FDMemTable,其中 ItemVals 作为 ftfloat 字段。我想使用 SUM(ItemVals) 的聚合函数,但我只想添加值 >0 的 ItemVals。 ItemVals 是一个 ftfloat,但据我所知,我无法将 null 值分配给 float 。因此,我使用值 -1 来指示(对我而言)空值。我尝试了 SUM(ItemVals)>0 但它只返回 TRUE。有人能指出我正确的方向吗?谢谢。

最佳答案

您可以使用extended expression syntax并使用 IIF 编写 SUM 表达式条件,并在字段值大于 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)

关于delphi - 使用 FireDac 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com