delphi4arab منتديات دلفي للعرب
فايربيرد و Transaction - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : فايربيرد و Transaction (/showthread.php?tid=11176)



فايربيرد و Transaction - Delphi2020 - 17-12-2020

السلام عليكم.
من فضلكم عندي اسائلة بخصوص ال Transaction باستعمال Firebird و Firedac.

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

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


RE: فايربيرد و Transaction - Delphi4Us - 18-12-2020

وعليكم السلام ورحمة الله

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

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

اليك مثال عملي لعمليتين
كود :
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;



RE: فايربيرد و Transaction - Delphi2020 - 18-12-2020

جميل جدا ،
بارك الله فيك.

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

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

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

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


RE: فايربيرد و Transaction - Delphi4Us - 18-12-2020

ان 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


RE: فايربيرد و Transaction - larbiparadox - 18-12-2020

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

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

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