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

البرنامج لا يحفظ اذا عملت ريستارت للحاسب

بدأه ابن اليمن في 26 يناير 2008 · 7 رد · 1,275 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا شباب

عندي 3 forms

و استخدم قاعدة بيانات بارادوكس

بعد الكتابة على الجداول و الحفظ و عمل ريستارت للحاسب

تضيع كافة المعلومات

بينما لا تضيع المعلومات في حالة اني عملت close

لكل form

هل م تعليل لذلك

يعني ان قاعدة البيانات لا تحفظ الا اذا عملت اغلاق للفورم

!!!!!!!!!!!!

شاكرا لكم جميعا في هذا المنتدى الرائع

#2

1- السؤال مكرر كثيرا يوجد على الاقل 3 مواضيع بها الاجابة

2- استعمالك للجداول غير صحيح

الطريقة الصحيحة فتح الجداول في حدث ما / مثلا في OnCreate الForm الرئيسي او DataModule

Table1.Open;
Table2.Open
...

وان كان عندك عدد كبير من الجداول يمكنك ان تختصر الكتابة ب

  for i := 0 to Data.ComponentCount-1 do
	  if( Data.Components[ i ] is TTable )then Begin
		(Data.Components[ i ] as TTable).Open;
		end;

وغلق الجداول عند انهاء مهام البرنامج،مثلا في حدث OnClose الForm الرئيسي او OnDestroy ان استخدمت DataModule

...
Table2.Close;
Table1.close;

او تختصر الكتابة ب

var
  i : integer;
begin
  for i := 0 to ComponentCount-1 do
	begin
	  if( Components[ i ] is TTable )then
	  begin
		(Components[ i ] as TTable).Close;
	  end;
  end;

end;

والسلام عليكم ورحمة الله وبركاته

d4baa0.gif
#3

السلام عليكم

استعمل الأنر التالي بعد كل عملبة Delete or Poste على قاعدة البيانات

  MyTable.Flushbuffers;

أدم الصلاة على النبي محمد ...............فقبولها حتما بدون تردد

أعمالنا بين القبول وردها ............إلا الصلاة على النبي محمد

#4
اقتباس
MyTable.Flushbuffers;

ولكن اخي الكريم حاول مثلا ان تحذف سجل و من ثم اعد تشغيل الحاسب

ستجد ان السجل عاد مرة اخرى رغم حذفه!!!!!!!!!

#5

السلام عليكم و رحمة الله و بركاته

هل ممكن أخي إرفاق الكود ختى نتمكن من مساعدتك ؟

أدم الصلاة على النبي محمد ...............فقبولها حتما بدون تردد

أعمالنا بين القبول وردها ............إلا الصلاة على النبي محمد

#6

MyTable.Flushbuffers;

#7

السلام عليكم يوجد حل ناجح ونهائي لهذه المشكلة وهو الإستعانة بمكتبة BDE في Uses في Unit التي تعمل عليها والتي بها أملا الحفظ ثم وفي نهاية كود الحفظ تضع هذا الكود

table1.post ;

if dbisavechanges(table1.handle) <> dbierr_none then showmessage('خطا غير منوقع أعد تشغيل الجهاز');

ويكتب السطر الثاني بع أمر الحفظ مباشرة وذلك ليقوم بتحويل الريكورد الذي أدخلت من الميموري إلى الهارد ديسك

والله أعلم

من جد وجد ومن زرع حصد

#8

السلام عليكم

ربما CachedUpdates للجدول هي True

لأنه هذه الخاصية تحفظ التغييرات في الذاكرة و يجب قبل الإغلاق استدعاء ApplyUpdates

لكن هذه الخاصية تستعمل لقاعدة بيانات على الشبكة أي للتخفيف من الترافيك

إذا لم تكن قاعدة بياناتك على حاسوب أخر اجعل CachedUpdates للجدول False

و حاول دائما استعمال Try... Finally إن لها حسابها أيضا و غالبا ما تكون هي الدواء.

و الله أعلم

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…