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

مشاكل الباردوكس معي لا حل لها

مغلق
بدأه 125dbf في 8 أغسطس 2007 · 15 رد · 1,765 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أنا أستعمل دلفي 7 و جداول الباردوكس

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

تم حل هذا المشكل بالكود التالي

procedure TForm1.Table1AfterPost(DataSet: TDataSet);
begin
 DbiSaveChanges(Table1.handle);
end

لكن ظهر مشكل أخطر من سابقه و هو في بعض الأحيان و أنا أجرب برنامجي و بعد الحفظ البيانات مباشرة

أقطع التيار عمدا و تظهر الكارثة و هي ، أن الجدول يصبح معطوب

و عند محاولة فتحه تظهر هذه الرسالة المبينة في الصورة

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

و جزاكم الله خيرا

post-126805-1186600795_thumb.jpg

#2

لرفع

#3

هل استعملتها في الحدث AfterPost فقط ؟

اقصد ربما لم تضفها في الحدث AfterDelete

-

ايضا ما هي نسخة دلفي ؟ 7 ؟

d4baa0.gif
#4

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

يمكنك أن تمحي ملف المفاتبح وتقوم بإنشاء آخر برمجيا

وعلى العموم يوجد procedure في وحدة bde تسمح لك بإصلاح الملف الذي يوجد فيه خلل

لا أعلمها بالضبط لكن تجد كل المعلومات في ملف المساعدة

#5

شكرا لكم و جزاكم الله خير

أنا أستعمل دلفي 7 entreprise

و لقد إستعمل هذا الكود في الحالتين AfterPost و AfterDelete

لكن هذا المشكل يتكرر كثيرا عند إنقطاع التيار الكهربائي .

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

البيانات بنسخ مرة أخرى إلى مجلد القواعد ، و بهذه العملية أكون قد خسرت جزءا بسيط من المعلومات و لما أفقدها كلها

أرجو من وجد حل أفضل أن يرد على سؤال

و شكرا

#6

كما قال اخي ghostdz عليك باعادة index برمجيا

لكن قبل ذلك حرب هذا

Try 
DBISaveChanges(Table1.handle); 
Except 
Table1.Close; 
Table1.Open; 
end;
d4baa0.gif
#7

أرجو من السيد عبد العزيز مناقشة المكشل معي و رأيه في طريقة نسخ قواعد البيانات

كل فترة زمنية و البرنامج يعمل

و شكرا

#8

اخي ل ا تطلب مني مناقشة، الموضوع مطروح للجميع...

هل جربت الكود فوق و لم يعمل ؟

ان نعم جرب هذا:

 try
	Table1.Close;
	Table1.Exclusive := True;
	Table1.Open;
	Check(DbiRegenIndexes(Table1.Handle));
	Table1.Close;
	Table1.Exclusive := False;
	Table1.Open;
	Check(DbiSaveChanges(Table1.Handle));
	Finally
end;

بالنسبة لنسخ قواعد اليانات فهذا بنفسه شيئ جيد

ومن المفروض وجود خاصة BackUp / Restore لقواعد البيانات في كل برنامج

d4baa0.gif
#9

شكرا أخي عبد العزيز لكن المشكل باقي كما هو

#10

السلام عليكم

أظن أن المشكلة سهلة و حلها واضح ، ما عليك إلا أن تعيد بناء Your Index باللغة الفرنسية Reindexer ta table و هذا الكود

chemainApplication := ExtractFilePath(Application.ExeName)
   if FileExists( chemainApplication + 'MaTable.px') = True then
   begin
	DeleteFile(chemainApplication + 'MaTable.px');
   end;
   Table1.TableName := 'MaTable.db';
   Table1.AddIndex( 'MaTable','Champ1',[ixprimary],'');

و السلام عليكم.

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

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

#11

شكرا أخي الكريم لإهتمامك و ردك

#12

بسم الله الرحمن الرحيم

أخي أنصحك بتجنب استعمال paradox واستبداله بقاعدة بيانات أخرى. أنا شخصيا استعملته لعدة سنوات لكنني منذ سنتين تقريبا لا أستعمل سوى DBISAM للتطبيقات الصغيرة و mySQL للكبيرة والتي تعمل على الشبكات.

B)

تم تعديل هذه المشاركة بواسطة DelphiCoder في 24 أغسطس 2007 في 17:46

1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

#13

عفوا اخي السائل

ولكن هل تقصد ان المشكلة تاتيك وقت البرمجة ام حال استخدام البرنامج

من قبل المستخدم على هيئة exe

نرجو الرد وعفوا على التاخير

ابن اليمن

#14

يحدث هذا الخطأ حين تنفيذ الملف exe و إنقطاع التيار الكهربائي

حيث لا تستطيع تنفيذ البرنامج مرة أخرى إلا بعد إستبدال الجداول المعطوبة

#15

اخي الكريم

اعتقد ان افضل حل كما قاله الاخوة في اعادة بناء index برمجيا

ولكن الى حد قولك ان برامجك صارت بلامعنى لا اظن ذلك

لان المشكلة كما وضحت تحدث عن تنفيذ ملف exe

و انقطاع التيار الكهربائي بينما ستكون حقا بلا معنى

في حالة ان البرنامج تنتج عنه هذه المشكلة بعد عمل

setup له

اتمنى لك التوفيق و النجاح

#16

بسم الله الرحمن الرحيم

يمكنك إعادة بناء الفهارس برمجيا كما اقترح الإخوة سابقا عند بداية البرنامج لكن بعد الموافقة على السؤال حتى لا يتم ذلك في كل مرة. ويمكنك الالتفاف على هذه الطريقة بوضع قيمة ما (مثلا 0) في ملف ما وليكن ملف نصي INI مثلا عند بداية البرنامج وتغييرها عند الخروج (مثلا 1) وفي حالة بداية البرنامج مع وجود القيمة (0) يقوم البرنامج بإعادة بناء الفهارس....

ومع هذا فأنا أنصحك بالنتقال إلى قاعدة بيانات أخرى غير البارادوكس و التBDE التي اعترفت بورلاند بأنها كانت خطأ تكتيكيا منها.... :)

1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

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

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

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

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

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

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