質問

FireDACでXE6を使用しています。ItemValsがftfloatフィールドとしてfdmemtableを持っています。合計(itemvals)の集計関数を使用したいが、値> 0を持つItemValsのみを含めてください。itemvalsはftfloatですが、見つけることができる限り、floatにNULL値を割り当てることはできません。。そのため、NULL値を(MEに)示すように-1の値を使用しています。私は合計(itemvals)> 0を試してみましたが、それはただ真実を返します。誰かが正しい方向に私を指していることができますか?ありがとう。

役に立ちましたか?

解決

extended expression syntax SUM式の表現条件IIFを使用して、0を超えるとフィールド値を返し、0を超えると0、0になります。このようにしてください。

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)に簡素化します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top