كيف اقوم بجمع قيم حقل واحد
#11
@tempuser
إقتباس : لوكان لديك مليون سجل
نتحدث هنا عن مجموع تفاصيل سجل معين (مثل مبلغ إجمالي الفاتورة)
إقتباس :عموما أفضل الحلول
وجدت مؤخرا (برأيي) أفضل طريقة لذلك في حالة استخدام ADO.
بارسال استعلام عن مجموع حقل من خلال TADOConnection يمكن استقبال الناتج على شكل _Recordset واقتناص أول سجل الذي يمثل المجموع.
أعتقد أن أحسن حدث لذلك هو OnDataChange للمكون TDataSource التابع لجدول الحقل الذي نريد الاستعلام عن مجموعه.
الطريقة لعرض المجموع في TLabel كما يلي:
كود :
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin lblTotal.Caption := ADOConnection1.Execute('SELECT SUM(FieldName) FROM TableName').Fields[0].Value; end;
هذا إلى حين نجد حل DefaultExpression مع ADO أو استعمال TAgregate.
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#12
DefaultExpression لا تعمل مع ADO الحل استخدام شيء مثل
كود :
procedure Flds_SetToDefExpr(const AFlds: array of TField); var i : Integer; begin for i := Low(AFlds) to High(AFlds) do with AFlds[i] do begin DataSet.Edit; if ( DefaultExpression='' ) then Clear else if HasOuterQuotes(DefaultExpression) then Value := RemoveOuterQuotes( DefaultExpression,True,False ) else Value := StrToInt(DefaultExpression); //raises if not an integer! end; end;
متوفر في مكون مجاني لـ Vassil Nazarov:
http://www.delphi4arab.net/forum/showthr...#post11509
ملاحظة: يمكن إرسال وتنفيذ استعلام مع TDatabase لكنه لا يعيد نتائج(_Recordset).
اللهم احقن دماء المسلمين، لا تنسوهم بالدعاء...
الرد
#13
السيد Nabilkeb فعلا الكود مهم واستعملته في حينه ويعطي نتيجة فعلية وصواب 100% مشكور أخي والله مشكور
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم