![]() |
|
معالجة سير تنفيذ الأوامر - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : معالجة سير تنفيذ الأوامر (/showthread.php?tid=8936) |
معالجة سير تنفيذ الأوامر - TAOTiE - 13-10-2017 السلام عليكم و رحمة الله في حالة حدوث استثناء في مرحلة ما من التنفيذ، كيف تعالج سير تنفيذ مجموعة من الأوامر المتتالية في حدث واحد (نقر على زر الحفظ مثلا) سيناريو: خلال تنفيذ أسطر متتالية من الأوامر يتم بمساعدتها تسجيل عملية بيع بنجاح (تحفظ في جدول المبيعات) ثم يحدث استثناء غير متوقع، مما يسبب فشل عملية الإنقاص من المخزون القيمة التي تم بيعها (فشل الحفظ في جدول المخزون للسلع) و نجد نفسنا امام خطأ في التسيير بين سلعة تم بيعها و لم يتم تسجيل خروجها من المخزون. و ماذا في حالة تسلسل مجموعة من المهام في حدث نقر واحد (حفظ البيع، حفظ انقاص من المخزون، حفظ تقرير النشاط، حساب المدخول المالي و طبعا قبلها مجموعة من الفحوصات لما ادخله المستعمل (فحص اذا كان ما ادخله فراغات او ارقام فقط او صيغة صحيحة للتاريخ او طول محارف اكبر من ما تم حجزه في طول الحقل)) كود : OnClickEvent
begin
task1 executed...
task2 executed...
UNEXPECTED EXCEPTION OCCURRED HERE
IMOPRTANT task3 not executed...
IMPORTANT task4 not executed...
end;RE: معالجة سير تنفيذ الأوامر - PLANSHARP - 13-10-2017 و عليكم السلام أهلا ب TAOTiE إذا كنت تستخدم ADO , يمكنك إستخدام: BeginTrans ,CommitTrans ,RollbackTrans RE: معالجة سير تنفيذ الأوامر - TAOTiE - 14-10-2017 جميل جدا، و هل كتابتها صحيحة بهذه الطريقة: كود : procedure TVentesDetails.Valider1Click(Sender: TObject);
begin
try
MenuPrincipal.ADOConnection.BeginTrans;
Valider();
MenuPrincipal.ADOConnection.CommitTrans;
except
MenuPrincipal.ADOConnection.RollbackTrans;
end;
end;حيث كل اوامر معالجة الحفظ و الانقاص و غيرها موجودة في دالة Valider لعملية بيع سلعة واحدة مرة واحدة. هل من طرق اخرى غير الاعتماد على ADOConnection في حماية سير تنفيذ الأوامر؟ RE: معالجة سير تنفيذ الأوامر - Delphi4Us - 18-10-2017 اجل صحيحة وهذه الطريقة ستجدها في كل قواعد البيانات او على الاقل لم اتعامل مع قواعد بيانات لا توجد بها هذه الطرريقة RE: معالجة سير تنفيذ الأوامر - TAOTiE - 18-10-2017 شكرا على المداخلة. حماية سير تنفيذ الأوامر من الأمور الأساسية المهمة جدا، لتفادي اي اشكال قد ينتج من سوء تسلسل التنفيذ. شكرا مرة اخرى على المشاركة. RE: معالجة سير تنفيذ الأوامر - Ben.Ja - 20-10-2017 (18-10-2017, 08:16 PM)TAOTiE كتب : شكرا على المداخلة. موضوع جيد نبهت عليه أخ TAOTie, هل يمكنك وضع مثال خفيف لاستخدام transaction مع try except RE: معالجة سير تنفيذ الأوامر - TAOTiE - 20-10-2017 آلية العمل في المشاركة رقم 3، بعد اعطاء امر حماية الأوامر بــ try و تحضير بداية الــ Transaction سوف يتم توجيه و اكمال التنفيذ في حالة حدوث استثناء الى الجزء exception الذي يتم فيه استدعاء Rollback لارجاع حالة قاعدة البيانات الى وضعها القبل Transaction و في حالة سير التنفيذ بدون حدوث استثناء سوف يتم اكمال العملية بــ Commit مباشرة في ملف قاعدة البيانات لما تم عمله. بمعنى ان عملية الحفظ النهائية و الحقيقية في ملف قاعدة البيانات سوف يتم تسيرها من طرف المكون ADOConnection حتى لو اعتمدنا على مكونات Table او Query في اضافة التسجيلات الى ملف قاعدة البيانات. يرجى التصحيح من الاعضاء. |