FireDAC Aggregatesを使用する
-
20-12-2019 - |
質問
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)
に簡素化します。
所属していません StackOverflow