المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: ظهور رسالة اثناء تنفيذ البرنامج
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي Borland Delphi
medreg
السلام عليكم ورحمة الله تعالى وبركاته
عندما اضغط على زر لتنفيذ عملية حسابية تظهر هذه الرسالة ويتوقف عن إتمام عملية الحساب
insufficient memory for this operation
table: G:\compta\bilan.db

علما بأنني استعمل dataModule1و dataModule2و dataModule3و DataModule4
وكل واحدة من الأربعة تحتوي على 19 قاعدة بيانات أي مجموع قواعد البيانات التي يحتوي عليها برنامجي هي 76 قاعدة بيانات و23 فورم
هذه الرسالة تظهر لي في الفورم 23 التي تحتوي على جدول حوصلة كل الحقول الموجودة في كل الجداول والمسمى Table_Recap
عند الضغط يبدأ في العمل إلى أن يصل إلى قاعدة من البيانات ويتوقف عليها بهذه الرسالة التي سبق وان اشرت لها في اعلى الموضوع
الكود المكتوب تحت الحدث الخاص بزر تنفيذ عملية الحساب هو كالآتي :
كود
table_recap.edit;
table_recapMT_BPD.value:=dataModule2.table_bpdMT_A1.value
+ dataModule2.table_bpsMT_A1.value+dataModule2.table_bpnMT_A1.Value;
إلى آخر جدول ثم أضع في الآخر
Table_Recap.post;

حاولت غلق كل الجداول ذاي كل فورم وضعت فيها مثل هذا الكود
لكل جدول في DataModule وضعت في الحدث
كود
procedure TDataModule1.Table_artAfterDelete(DataSet: TDataSet);
begin
DbiSaveChanges(Table_art.handle);
end;

procedure TDataModule1.Table_artAfterEdit(DataSet: TDataSet);
begin
DbiSaveChanges(Table_art.handle);
end;

procedure TDataModule1.Table_artAfterPost(DataSet: TDataSet);
begin
DbiSaveChanges(Table_art.handle);
end;

procedure TDataModule1.Table_artAfterClose(DataSet: TDataSet);
begin
DbiSaveChanges(Table_art.handle);
end;

procedure TDataModule1.Table_artBeforeClose(DataSet: TDataSet);
begin
DbiSaveChanges(Table_art.handle);
end;

procedure TDataModule1.Table_artBeforePost(DataSet: TDataSet);
begin
DbiSaveChanges(Table_art.handle);
end;

في الحدث OnShow

كود
procedure TForm1.FormShow(Sender: TObject);
begin
with dataModule1 do begin
table_art.Open;
end;
with dataModule2 do begin
table_bpd.open;
end;
with dataModule3 do begin
table_bpr.Open;
end;
with dataModule4 do begin
table_cal.Open;
end;

ثم في الحدث OnClose
كود
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
with dataModule1 do begin
table_art.Close;
end;
with dataModule2 do begin
table_bpd.Close;
end;
with dataModule3 do begin
table_bpr.Close;
end;
with dataModule4 do begin
table_cal.Close;
end;

أرجو إن كان هنا حل لهذه المشكلة افيدونا به وجزاكم الله عنا كل خير
B.M.AbdelAziZ
طريقة استخدامك للForm والجداول + طريقة الحساب تستهلك كثيرا من الذاكرة
عليك باعادة هيكلة برنامجك
لاتفتح اي جدول الا عند الحاجة اليه
الForm التي لاتحتاجها لاتنشاها الا عند الحاجة اليها وعند الانتهاء حررها
ايضا حاول اعادة التفكير في طريقة الحساب وجد طريقة اخرى اقل استهلاك للذاكرة
يمكن ان تبداء بأخر نقطة
وبالتوفيق
medreg
إقتباس(B.M.AbdelAziZ @ Oct 12 2008, 08:53 AM) *
طريقة استخدامك للForm والجداول + طريقة الحساب تستهلك كثيرا من الذاكرة
عليك باعادة هيكلة برنامجك
لاتفتح اي جدول الا عند الحاجة اليه
الForm التي لاتحتاجها لاتنشاها الا عند الحاجة اليها وعند الانتهاء حررها
ايضا حاول اعادة التفكير في طريقة الحساب وجد طريقة اخرى اقل استهلاك للذاكرة
يمكن ان تبداء بأخر نقطة
وبالتوفيق


مشكور يا سيدي على النصائح ونظرًا لعدم وجود خبرة كافية لدي في البرمجة والذي كان الفضل لله على تمكني من ما وصلت اليه من معرفة على البرمجة وبفضل مجهوداتكم بردودكم ونصائحكم وكل عضو في المنتديات العربية وخاصة منتدى فنان سات ومنتدى الفريق العربي للبرمجة ومنتدانا الغالي منتدى الدلفي للعرب والذي لا نعرف الى حد الآن ما سبب إغلاقه هل هو إغلاق ابدي أم إغلاق مؤقت استطعت ان اصل إلى هذه المعلومات والممثلة في هذا الجزء من مشروع يتعلق بموازنة حسابية والتي سبق لي وان اشرت لكم بأنها تتكون من 36 قاعدة بيانات ها أنا أرفع جزء منه حتى تطلعوا عليه وتشيروا لي أين يكمن الخطأ الذي يسبب مثل هذه التحذيرا بالخطأ كما اطلب منكم تصحيحه والسلام عليكم ورحمة الله تعالى وبركاته
B.M.AbdelAziZ
إقتباس
ومنتدانا الغالي منتدى الدلفي للعرب والذي لا نعرف الى حد الآن ما سبب إغلاقه هل هو إغلاق ابدي أم إغلاق مؤقت

سبق وان قلت ان منتدى دلفي للعرب متوقف بسبب مشكل تقني وعندما يحل سيعود ان شاء الله
بالنسبة للمرفق تم التحميل وساطلع عليه بعد صلاة الجمعة ان شاء الله
B.M.AbdelAziZ

بقي حوالي ساعة على صلاة الجمعة
القيت نظر سريعة على المرفق هناك الكثير من الاشياء "العوجة" لكن اخبرني ما المشكل بالظبط ؟
مشكلة في الحساب ام اماذا بالتحديد ؟
medreg
إقتباس(B.M.AbdelAziZ @ Nov 14 2008, 12:23 PM) *

بقي حوالي ساعة على صلاة الجمعة
القيت نظر سريعة على المرفق هناك الكثير من الاشياء "العوجة" لكن اخبرني ما المشكل بالظبط ؟
مشكلة في الحساب ام اماذا بالتحديد ؟


مشكور يا صديقي فعلاً لقد حان موعد صلاة الجمعة
وقبل أن اغادر البيت متجهًا نحو المسجد
كل ما اريد منك هو مشكلة رسالة الخطأ التي أوضحتها لكم سابقا
وارفقت هذا المثال حتى تطلعوا عليه
وتصحيح كل الأشياء المعوجة به
وجزاكم الله عنا كل خير
وتقبل الله صلاتكم وزادكم أجرًا
B.M.AbdelAziZ

رسالة الخطا "insufficient memory for this operation" لم تظهر معي بعد تجربة المرفق
كما قلت لك سابقا طريقة برمجتك عامة غير صحيحة
مثلا انت استخدمت اكثر من جدول لحفظ معلومات من المفروض ان تكون بجدول واحد
مثلا كل من الجداول: REC900MT_BP / REC901MT_BP / REC902MT_BP تكون جدول واحد
بالنسبة للواجه فانت استعملت عدد كبير جدا من DBEdit ورتبتها كانها جدول Grid وكان عليك استخدام مكون واحد فقط مثل DBGrid او StringGrid

اجريت تعديل طفيف على المرفق لا علاقة له بما قلت فوق
إضغط لإظهار المرفق
medreg
إقتباس(B.M.AbdelAziZ @ Nov 14 2008, 02:29 PM) *
[color="blue"]
رسالة الخطا "insufficient memory for this operation" لم تظهر معي بعد تجربة المرفق
كما قلت لك سابقا طريقة برمجتك عامة غير صحيحة
مثلا انت استخدمت اكثر من جدول لحفظ معلومات من المفروض ان تكون بجدول واحد
مثلا كل من الجداول: REC900MT_BP / REC901MT_BP / REC902MT_BP تكون جدول واحد
بالنسبة للواجه فانت استعملت عدد كبير جدا من DBEdit ورتبتها كانها جدول Grid وكان عليك استخدام مكون واحد فقط مثل DBGrid او StringGrid

السلام عليكم ورحمة الله تعالى وبركاته
حتى تدرك يا سيدي الفاضل سبب كثرة الجداول والعدد الضخم لDBEdit حسب خبرتي البسيطة والتي لا أعتبرها خبرة على الإطلاق أمامكم وهذا ليس بمجاملة بل الحقيقة وإن كان هناك طريقة لإستعمال DBGrid بدلاً من كثرة DBEdit على أن تتم طلاعة النتائج حسب ما هو موضح في طباعة القسم 901 لأن هذه الورقة هي عبارة عن نموذج مطبعي مطبوع بناء على تعليمة قانونية لا يجوز التغيير فيه ولهذا السبب اضطريت لوضع جدول لكل قسم
لقد أضفت للمرفق الذي ورد منك بعد ان عدلت عليه ورق طباعة للقسم 901
أرجو الإطلاع على المرفق وحاول طباعة الفسم 901 لترى إن كان بإمكانك مد يد المساعدة في وضع DBGrid بدلاً من DBEdit وارفق لي مثال على ذلك
وجزاكم الله عنا كل خير
B.M.AbdelAziZ

هناك اشياء كثيرة بحاجة للتعديل والامر يتطلب وقت طويل
أقترح عليك حل لتعم الفائدة الجميع
ان اردت البدء من الصفر قم بفتح موضوع جديد (مشروع محاسبة مؤسسة)
ولك مني ان اساعدك الى ان تنتهي منه (مع ملاحظة حاليا يمكنني دخول المنتدى فقط الخميس/الجمعة)
وربما يساعدك باقي الشباب ايضا
والسلام عليكم




(فكر في الامر جيدا ثم Make your choice)
B.M.AbdelAziZ

medreg
ماذا قررت ؟ ام نسيت الأمر!
medreg
إقتباس(B.M.AbdelAziZ @ Nov 20 2008, 02:42 PM) *

medreg
ماذا قررت ؟ ام نسيت الأمر!


السلام عليكم ورحمة الله تعالى وبركاته
لا يا صديقي لم أنسى
لكن كل ما في الأمر وهو أنني غيرت الطريقة فقط
وبدلاً من كثرة الحقول في قواعد البيانات إكتفيت بوضع DBGrid لكل قاعدة بيانات وكل قاعدة من هذه القواعد تحتوي على 12 حقل فقط
أما بالنسبة للنتيجة المطلوبة وهو انني أكثرت من مكون QRLabel في QuickRep و وضع متغيرات في الإجراء BeforPrint لكل Bandetail بدلاً من استعمال الحقول واليك هذا المثال
كود
procedure TForm5.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
var s1:string;
    r1:string;
t1:real;
begin
s1:='';
r1:='';
t1:=0;
with DM_1 Do begin
  T_900.First;
  while not T_900.Eof do
  begin
  T_900.Edit;
  if (T_900CD_AR.Value='600')and(T_900Art.Value='1') then  s1:=T_900CD_AR.Value;
  if (T_900CD_AR.Value='600')and(T_900Art.Value='1') then  r1:=T_900LB_AR.Value;

if (T_900.FieldByName('Art').asstring='1')  then  t1:=t1+T_900.FieldByName('MT_AR').AsFloat;
  T_900.Next;
  end;
end;
    MTP1.Caption:=formatfloat('### ### ##0.00',t1);    if t1<=0.00 then MTP1.Caption:='';
Cde1.Caption:=s1;
LB1.Caption:=r1;
end;
وهكذا إستعمل هذ الكود لكل المتغيرات
ارجو أن أكون هذه المرة قد وفقت
B.M.AbdelAziZ

جيد هذا كفيل بتخفيف الامر قليلا
لكن ان طورت اكثر بالبرنامج واضفت مكونات اخرى ربما يعود مشكل استهلاء الذاكرة من جديد
والسلام عليكم
medreg
إقتباس(B.M.AbdelAziZ @ Nov 21 2008, 10:42 AM) *

جيد هذا كفيل بتخفيف الامر قليلا
لكن ان طورت اكثر بالبرنامج واضفت مكونات اخرى ربما يعود مشكل استهلاء الذاكرة من جديد
والسلام عليكم


سأجرب حظي وأنا سعيد برأيك هذا وسأظل متابعًا لنصائحكم
وإذا افترضنا ظهور مشكل إستهلاك الذاكرة ما هو الحل لهذه المشكلة
ومشكو وتقبل الله منا ومنكم صلاة الجمعة وباقي الصلوات بمزيد من الأجرة والمغفرة
medreg
بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه
ما معنى هذه الرسالة وما سبب ظهورها وما الحل
مرة تظهر هكذا
Circular datalinks are not allowed
مرة تظهر هكذا
Table1: Circular datalinks are not allowed
B.M.AbdelAziZ

الخطأ يظهر عندما تحاول ربط جدولين Master/Detail بطريقة خاطئة
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.