الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

جمع حقول

مغلق
بدأه aguess في 14 يونيو 2004 · 4 رد · 732 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي جدول يحتوي على تسجيلات , و أريد جمع بعض الحقول من كل تسجيلة و وضع النتيجة في الحقل الأخير من كل تسجيلة.

لا تحتوي كل تسجيلة على الحقول التي أريد جمعها , فهناك بعض الحقول كالإسم , المنصب......الخ, فالحقول التي أريد جمعها هي عددية.

الجدول الذي يحتوي على التسجيلات موضوع في DBGrid.

#2

لقد حاولة جمع الحقول بهذه الطريقة لكن واجهني مشكل

[COprocedure TForm1.Action1Execute(Sender: TObject);

var

i : integer;

montantAnuel : double;

begin

Table1.Open;

table1.First;

with Table1 do

while not Table1.Eof do

begin

for i := 0 to Table1.FieldCount -1 do

-------> Table1.FieldByName('MONTANT ANNUEL').Value := Table1.FieldValues['JANVIER'] + Table1.FieldValues['AVRIL'];

Table1.Next;

end;

table1.Close;

end;

end.DE]

و يصدر الخطأ التالي

Le projet xxxx a provoqué une classe d'exception EDatabaseError
avec le  message  'Table1:L'ensemble de données n'est pas Edition
 ou Insertion'. 
 Processus stoppé.  Utilisez Pas-à-pas ou Exécuter pour continuer.
#3

صديقي الكريم :

فهمت من سؤالك التالي:

لديك جدول يحوي سجلات والسجلات تحوي حقول مثل : الاسم – المنصب – العمر – الراتب - .......الخ

ولديك حقول عددية في كل سجل....ما هي..؟..ماذا تريد أ ن تجمع لتضعه في الحقل الأخير من السجل..؟..أرجو الإيضاح في هذه النقطة..

ثم إنك ذكرت التالي ((لا تحتوي كل تسجيلة على الحقول التي أريد جمعها ))..فكل سجل في الجدول يحوي نفس الحقول في السجلات السابقة له واللاحقة له وهذا شيء بديهي وقد يكون قصدك إنه لا توجد بيانات في بعض الحقول وهذا وارد فأرجو أيضاً أن توضح في هذه النقطة..

على كل لديك الطريقة :

لدينا جدول ويحوي مثلاً عدة حقول منها :

الراتب الأساسي – الإضافي – المكافآت

وهي حقول في جدول اسمه Table1 وأسماء هذه الحقوق على التوالي :

A1 – A2 – A3 نريد جمعها ووضعها في حقل أخير وليكن عنوانه المستحق الشهري واسمه البرمجي M على سبيل المثال..فيكون الكود التالي لجمع هذه الحقول الثلاثة ووضعها في الحقل الرابع M وهذا الكود يطبق على سجل واحد فقط :

Table1.Edit;

Table1A4.Value:= Table1A4.Value+ Table1A4.Value+ Table1A4.Value ;

Table1.Post ;

طبعاً تكون صفة الـ Active=True للجدول أثناء التصميم أو تبدأ الكود السابق بالعبارة Table1.Open وتنهيها بالعبارة Table1.Close أي على كيفك..

طبعاً هذا الكود يطبق على سجل واحد ولتطبيقه على كامل الجدول كما يلي :

Table1.First ;

While Not Table1.EOF Do

Begin

Table1.Edit;

Table1A4.Value:= Table1A4.Value+ Table1A4.Value+ Table1A4.Value ;

Table1.Post

Table1.Next;

End;

صديقي العزيز..هذا ما فهمته من سؤالك فأرجوأن أكون وفقت في تقريب الصورة قدر الإمكان..

ودمتم..

#4

تصحيح ..

ورد خطأ في الكود البرمجيالتالي :

Table1A4.Value:= Table1A4.Value+ Table1A4.Value+ Table1A4.Value

والصحيح هو :

Table1M.Value:= Table1A1.Value+ Table1A2.Value+ Table1A3.Value

لإأرجو المعذرة على هذا الخطأ المطبعي ..

#5

ولكن أدقائي هذه الطريقة بطيئة جدا خاصة اذا كانت قاعدة البيانات كبيرة جدا مثلما ذكرته في احد الأسئلة في المنتدى، وهناك طريقة أسهل بواسطة ال sql فهل من لديه خبرة

هذا الموضوع مغلق.

مواضيع مشابهة