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

ضياع البيانات من قاعدة بيانات انتربيز

بدأه moa mohsen في 26 يوليو 2008 · 2 رد · 584 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

استعمل قاعدة بيانات انتربيز في برنامجي لتسجيل ايصالات منذ سبع سنوات ويصل عدد الايصالات الشهرية الى حوالي 1300 ايصال وفي خلال هذه الفترة

حدث حوالي خمس مرات ان ضاعت بيانات ادخال معين حيث نقوم بادخال كل 25 ايصال على حدا وهو العدد الموجود في دفتر الايصالات حيث اقوم بادخالها من خلال فورم به ديتا قريد وادخل بها 25 ايصال واقوم بعد الادخال مباشرة بطباعة كشف 25 ايصال التى ادخلتها ويحدث ان اطلب احد الايصالات المذكورة لعمل ما فلا اجده هو و24 ايصال الباقية مع اني اجد الصفحة المطبوعة التى طبعتها بعد ادخال هذه الايصالات مما يدل على اني قمت بادخاله فاقوم باعادة ادخال الدفتر المفقود من جديد وكما قلت حدث هذا حوالي 5 مرات في سبع سنوات وانا لا اعتبر ذلك مشكلة لاني استعمل هذا البرنامج من برمجتى واستعمله في عملي واستطيع ان ابحث واحدد المشكلة واحاول اصلاح الامر وخاصة اني لم الاحظ حدوث هذا الامر في السنوات الاخيرة ولكني الان اقوم بعمل برنامج مبيعات لزبون واخشى ان تحدث هذه المشكلة معه فاقع في احراج معه وانا اطرح هذا السؤال هنا ليس لتحديد اين المشكلة عندي ولكن للحصول على تعليمات ونصائح عامة يمكن ان يستفيد منها الجميع في طريقة بناء البرنامج او طريقة التعامل مع الجداول او الحقول لتفادي هذه المشكلة فللاخوة في هذا المنتدي من الخبرة ما ليس لدي وقد يكون باتباع اجراء معين في الحفظ او الترحيل او بناء الجدول او اي شئ يمكن ان نستفيد منه

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

moa mohsen كتب:
استعمل قاعدة بيانات انتربيز في برنامجي لتسجيل ايصالات منذ سبع سنوات ويصل عدد الايصالات الشهرية الى حوالي 1300 ايصال وفي خلال هذه الفترة

حدث حوالي خمس مرات ان ضاعت بيانات ادخال معين حيث نقوم بادخال كل 25 ايصال على حدا وهو العدد الموجود في دفتر الايصالات حيث اقوم بادخالها من خلال فورم به ديتا قريد وادخل بها 25 ايصال واقوم بعد الادخال مباشرة بطباعة كشف 25 ايصال التى ادخلتها ويحدث ان اطلب احد الايصالات المذكورة لعمل ما فلا اجده هو و24 ايصال الباقية مع اني اجد الصفحة المطبوعة التى طبعتها بعد ادخال هذه الايصالات مما يدل على اني قمت بادخاله فاقوم باعادة ادخال الدفتر المفقود من جديد وكما قلت حدث هذا حوالي 5 مرات في سبع سنوات وانا لا اعتبر ذلك مشكلة لاني استعمل هذا البرنامج من برمجتى واستعمله في عملي واستطيع ان ابحث واحدد المشكلة واحاول اصلاح الامر وخاصة اني لم الاحظ حدوث هذا الامر في السنوات الاخيرة ولكني الان اقوم بعمل برنامج مبيعات لزبون واخشى ان تحدث هذه المشكلة معه فاقع في احراج معه وانا اطرح هذا السؤال هنا ليس لتحديد اين المشكلة عندي ولكن للحصول على تعليمات ونصائح عامة يمكن ان يستفيد منها الجميع في طريقة بناء البرنامج او طريقة التعامل مع الجداول او الحقول لتفادي هذه المشكلة فللاخوة في هذا المنتدي من الخبرة ما ليس لدي وقد يكون باتباع اجراء معين في الحفظ او الترحيل او بناء الجدول او اي شئ يمكن ان نستفيد منه علما باني استعمل قاعد بيانات انتر بيز التى تاني مع دلفي7

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

#2

بفرض أنك تقوم بعمليات الحفظ بشكل سليم فإن قواعد البيانات من نوع انتر بيز تعاني أحيانا من بعض الأخطاء مثل Page Errors و تنتج هذه الأخطاء أحيانا عندما يحدث انهيار لخدمة IBServer أثناء عملية الحفظ بشكل ما أو انقطاع البرنامج المفاجئ و توقف الـ Transaction و لذلك تجد برنامج GFix مرفقا مع هذا النوع من قواعد البيانات و الذي يقوم بفحص قاعدة البيانات و محاولة اصلاحها و لكن لكي تتجنب الوقوع في الخطأ من الأصل عليك باتباع التالي و هي غيض من فيض:

1- تصميم عمليات الحفظ على شكل Tranaction بشكل جيد بحيث أن البرنامج أما أن يقبل البيانات الصحيحة كاملة أو يرفضها

2- حاول أن تفعل الـ log

3- القاعدة الذهبية : أبق دائما نسخ احتياطية

4- استخدم دائما النسخ المستقرة من الـ InterBase

5- إذا كنت تستخدم عمليات Batch كبيرة في برنامجك حاول أن تصمم قاعدة البيانات بأكبر حجم ممكن للصفحة

6- دائما ضع القيود المناسبة لجداولك Constraints و أضف إليها Index حسب الحاجة

#3

شكرا على الرد

فيما يتعلق ب Tranaction فلا استعملها في هذا البرنامج ولكني استعملها في برنامج اخر على الشكل التالي واذكره هنا كي يفيدني اعضاء هذا المنتدي بتقييم لعملى هل هو صحيح ام لا وانا اعمل ذلك لكي يتم تنفيذ كل الكود بين

ibtransaction1.Active := false;
ibtransaction1.StartTransaction;
 table1.......
  ....

 ibtransaction1.CommitRetaining;

علما بان ibtransaction1 ليست default transaction لقاعدة البيانات ولكنها فقط في الفورم الذي به الجدول الذي اريد ان ارحل له البيانات لان هذه transacion خاصية defaultaction=TARollbackRetaining

اما default transaction لقاعدة البيانات فخاصية defaultaction=TACommit

وهذا ما اعلمه عن استخدام transaction فارجو افادتي عن صحته من خطاءه

اما عن نسخة الانتربيز التى اعمل عليها ففي حالة البرنامج الذي ذكرته وحدثت به المشكلة فهي التى تاتي مع دلفي 7 وهي ib6.5

ولدي النسخة التى تاتي مع توربو 2006 وهي ib7.5 ولدي نسخة 2007 وجدتها في الانترنت ولا اعلم اي هذه النسخ اكثر استقرار

ارجو الافادة

فيما يتعلق باستخدام log فلا اعلم بذلك ارجو الافادة

فيما يتعلق بالقيود لا استعمل شئ من هذا الفبيل ولو تكرم اخواني في المنتدي بتوضيح اي مما سبق اكن شاكر

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

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

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

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

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

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