delphi4arab منتديات دلفي للعرب

نسخة كاملة : فايربيرد و Transaction
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم.
من فضلكم عندي اسائلة بخصوص ال Transaction باستعمال Firebird و Firedac.

أود أن أعرف كيفية اتستعمال ال Transaction و هل كل ما أقوم بتعديل (Insert , Update , delete)  أقوم باستدعاء ال Transaction ؟
مع ال FdTable أو FdQuery.

في الختام هل ممكن مثال ولو بسيط حول هذا الموضوع.
و بارك الله فيكم.
وعليكم السلام ورحمة الله

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

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

اليك مثال عملي لعمليتين
كود :
FDConnection1.StartTransaction; try   FDQuery1.ExecSQL;   ....   FDQuery1.ExecSQL;   FDConnection1.Commit; except   FDConnection1.Rollback;   raise; end;

العمليات المتداخلة

كود :
// start new transaction FDConnection1.StartTransaction; try   FDQuery1.ExecSQL;   ....   // set savepoint   FDConnection1.StartTransaction;   try     FDQuery1.ExecSQL;     ....     // release savepoint     FDConnection1.Commit;   except     // rollback to savepoint     FDConnection1.Rollback;     raise;   end;   // commit transaction   FDConnection1.Commit; except   // rollback transaction   FDConnection1.Rollback;   raise; end;
جميل جدا ،
بارك الله فيك.

1- ما هو دور
كود :
raise;

2- بالنسبةل Transaction المتداخلة ، هل الأفضل استعمال 2 FDTransaction او الاكتفاء بواحدة.

3- هل  هي نفس الطريقة التي يجب استعمالها في FdTable ؟

جزاك الله خيرا.
ان raise تيتخدم لرفع استثناء والقيام بعملية ما استدعاء دالة او اظهار رسالة او اي امر ولاحظ انها موجودة في الحاوية التي سيتم تنفيذها عند حدوث اسثناء
بشكلها هذا هي حقيقة لا تفعل اي شئ ولكن امثلة على الاستخدام :


كود :
try except   raise EOtherError.Create('My Message'); end;


كود :
procedure MyHandleException(AException: Exception); begin   ShowMessage(AException.Message);   AcquireExceptionObject;   raise AException; end; procedure TForm1.Button1Click(Sender: TObject); begin   try     raise Exception.Create('Bum');   except     on E: Exception do       MyHandleException(E);   end; end;


كود :
uses   SysUtils; procedure RaiseMyException; begin   raise Exception.Create('Hallo World!'); end;


التداخل فقط لاعطيك فكرة ان ذلك ممكن فيتم تنفيد عمليات والغاء اخرى حسب التركيبة المستخدمة

ويمكنك الاكتفاء بواحد فقط بالتأكيد يحتوي العديد من العمليات اضافة تعديل حذف وغيره .

واجل ماتسخدمه مع مكون Table هو نفسه مع Query
وعليكم السلام

لإثراء الموضوع

كود :
https://www.youtube.com/watch?v=grRVDj-BVdM