باستخدام مجاميع فيريداك
-
20-12-2019 - |
سؤال
أنا باستخدام إكس 6 مع فيريداك.لدي فدممتابل مع إيتممالس كحقل فتفلوت.وأود أن استخدام وظيفة المجاميع من مجموع (إيتممالس) ولكن أود فقط إيتممالس مع قيمة >0 ليتم إضافتها في.إيتمفالز هو فتفلوت ولكن بقدر ما أستطيع أن أجد ، لا أستطيع تعيين قيمة فارغة إلى تعويم.لذلك أنا باستخدام قيمة -1 للإشارة (بالنسبة لي) قيمة فارغة.حاولت سوم(إيتمفالز) > 0 لكنه يعود فقط صحيح.يمكن لأي شخص أن يشير لي في الاتجاه الصحيح?شكرا.
المحلول
يمكنك استخدام extended expression syntax
والكتابة لجهودكم SUM
حالة التعبير مع IIF
وإرجاع قيمة الحقل عندما يكون أكبر من 0 ، و 0 عندما يكون أقل أو يساوي 0.مثل هذه الطريقة:
Aggregate.Expression := 'SUM(IIF(ItemVals > 0, ItemVals, 0))';
ولكن العودة إلى جذر سؤالك.لقد قلت ، أنه لا يمكنك العثور على طريقة لتعيين قيمة فارغة لحقل ftFloat
نوع البيانات.تخميني هو أنك تقوم بتعيين القيم بهذه الطريقة:
FDMemTable.FieldByName('ItemVals').AsFloat := 1.23;
نعم ، بهذه الطريقة لا يمكنك حقا تعيين قيمة فارغة ، ولكن يمكنك القيام بذلك من خلال Value
خاصية الحقل ، على سبيل المثال.:
FDMemTable.FieldByName('ItemVals').Value := NULL;
تعيين قيمة فارغة بدلا من -1 سوف تصف أفضل بكثير نية لا قيمة ، وتبسيط التعبير الكلي الخاص بك مرة أخرى إلى SUM(ItemVals)
.