3

FireDac で XE6 を使用しています。ItemVals を ftfloat フィールドとして持つ FDMemTable があります。SUM(ItemVals) の集計関数を使用したいのですが、値が 0 より大きい ItemVals だけを追加したいのです。 . したがって、-1 の値を使用して (私に) null 値を示しています。SUM(ItemVals)>0 を試しましたが、TRUE が返されます。誰かが私を正しい方向に向けることができますか? ありがとう。

4

1 に答える 1

3

式の条件に を使用extended expression syntaxして記述し、フィールド値が 0 より大きい場合はフィールド値を返し、0 以下の場合は 0 を返すことができます。次のように:SUMIIF

Aggregate.Expression := 'SUM(IIF(ItemVals > 0, ItemVals, 0))';

しかし、あなたの質問の根本に戻ります。あなたは、ftFloatデータ型のフィールドに NULL 値を割り当てる方法が見つからないと言いました。私の推測では、次のように値を割り当てていると思います。

FDMemTable.FieldByName('ItemVals').AsFloat := 1.23;

はい、そのように実際に NULL 値を割り当てることはできませんがValue、フィールドのプロパティを介してそれを行うことができます。

FDMemTable.FieldByName('ItemVals').Value := NULL;

-1 の代わりに NULL 値を割り当てると、値がないという意図をより適切に記述し、集計式を単純化してSUM(ItemVals).

于 2014-07-29T07:17:04.493 に答える