تحياتي لكم جميعا..
*-امر COMMIT عند تنفيذ هذا الامر يتم ما يلي :
1- يتم التأكد اولا من ان الشاشه قد تم اجراء التعديل عليهاوالمفصود هنا وجود CHANGE على حقول الشاشه.
2- يتم تنفيذ محتويات ال TRIGGER PRE-COMMIT
3- يتم تطبيق العمليه التي حدثت (اضافه،تعديل،حذف) على قاعدة البيانات.
*- امر POST تتم كافة الاجراءات السابقه في امر COMMIT ما عدا الاجراء رقم (3) حيث لا يتم هنا التأثير على قاعدة البيانات.
----------------
دواعي استعمال POST :
1- في الشاشات التي تمتاز بخاصيةMDI حيث يكون هنالك تعدديه في الشاشات ويكون امر الحفظ في الشاشه الرئيسه، فلو تم التعديل على الشاشه الثانيه والثالثه يكون حفظ البيانات بأمر POST لأنه يمكن التراجع عن الحفظ في الشاشه الرئيسه،وبعد العوده للشاشه الرئيسه ان لم نعمل COMMIT لا يتم الحفظ ، واذا عملنا COMMIT يتم حفظ بيانات الشاشه الثانيه والثالثه حتى لو كانتا مغلقتين.
2-توجد رساله مغلبه المبرمجين كثير وهي :
(YOU WANT TO SAVE CHANG ?) على سبيل المثال :
يوجد عندي BLOCK اسمه (MST)ملف الموظفين واخر اسمه (DTL) ابناء الموظفين وتوجد علاقه بينهم
من واحد (MST) الى متعدد(DTL) وتم اجراء تعديل على السجل من
سجلات (DTL) التابع للموظف (محمد) مثل تعديل اسم احد ابنائه في ملف الابناء. واردت بعد ذلك الانتقال من الموظف محمد الى الموظف خالد دون اجراء عملية الحفظ على سجلات ابناء الموظف (محمد) تظهر الرساله السابقه (YOU WANT TO SAVE CHANG ?) ..
لحل هذه المشكله يتم وضع امر (POST) على النحو التالي :
في TRIGGER ON-CLEAR-DETAILS
BEGIN
IF :SYSTEM.FORM_STATUS = 'CHANGED' THEN
POST
END IF
END
ستجد ان المعاناه التي تعانيه قد انتهت ويمكنك التنقل بين سجلات الشاشه دون اجراء الحفظ المؤثر على قاعدة البيانات الا مره واحده بأمر COMMIT.
ارجو ان اكون قد افتدكم بشيئ
قد يكون الموضوع فيه نقص اعتذر مقدما واتمنى من يرى اي خطأ ان يصححه لي وشكرا
الى لقاء اخر