بسم الله الرحمن الرحيم
للـ Transaction فائده عظيمه .. لنفهم هذه الفائده .. لنفرض اننا نصمم قاعدة بيانات لبنك وافترضنا ان عميل جاء للبنك ومعه شيك يريد ان يضعه في حسابه .. هذا يعني اننا اولا سنخصم ( او بالاصح سنضع قيمة المبلغ في حقل السحب) هذا المبلغ من حساب صاحب الشيك ثم سنقوم بايداع قيمة الشيك الى حساب حامل الشيك .. واثناء العمليه الحاسوبيه تم الخصم من حساب صاحب الشيك ثم صار خلل في الاتصال بعد ما خصم المبلغ ولم يتم الايداع في حساب حامل الشيك .. فهذه مشكلة .. لذا نريد طريقه اذا حصل خلل فاننا نتراجع عن عملية الخصم
وبالمره ساشرح طريقة الاتصال بقاعدة البيانات من نوع اكسيس
اولا يجب ان نعرف اتصال مع قاعدة بيانات ويكون كالتالي
Dim con As New OleDb.OleDbConnection
ثم نعرف الـ Transaction ويكون كالتالي
Dim t As OleDb.OleDbTransaction
ثم نكتب دالة اكتشاف الاخطاء Try ثم نضغط على Enter في لوحة المفاتيح ستتولد عندك جملتين اخر الاولى
Catch ex As Exception
والثانيه
End Try
اكتب قبل الاخيره Finally وسيكون الكود كالتالي
Try Catch ex As Exception Finally End Try
فتكتب الكود الذي تريد اكتشاف الخطأ به بعد الـ Try واذا صار فيه خطأ فسينفذ ما بعد الـ Catch وسواءً كان هناك خطأ او لم يكن فسينفذ الكود الذي بعد Finally
اذا اكتب الاتي بعد الـ Try حتى اخبرك بغير ذلك
حدد نوع قاعدة البيانات .. وفي حالتنا هذه اكسيس .. واربطه بالاتصال الذي عملناه قبل .. فاكتب الكود التالي
con.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=db1.mdb"
ثم نقوم بفتح الاتصال
con.Open()
ثم نقوب بامر الـ Transaction بان يبدأعمله ونربطه بالاتصال .. كالتالي
t = con.BeginTransaction
ثم نعرف كائن الاوامر .. كالتالي
Dim com As New OleDb.OleDbCommand
ثم نربط كائن الاوامر بالاتصال كالاتي
com.Connection = con
ونربطه مع الـ Transaction .. كالتالي
com.Transaction = t
ثم نكتب تعليمات الـ SQL واوامر التنفيذ وهي كالاتي
com.CommandText = "insert into Cust1 (Op_Date,Withdrow) values ('01/03/2005',300000)"
com.ExecuteNonQuery()
com.CommandText = "insert into Cust2 (Op_Date,Deposit) value ('01/03/2005',300000)"
com.ExecuteNonQuery()ولاحظ انني عنوتا اخطأت في كتابة values وكتبتها في التعليمه الثانيه value
ولو فرضنا ان ليس هناك خطأ فنكتب الكود التالي لتاكيد تنفييذ الاوامر كاضافة او تعديل او حذف
t.Commit()
والان اكتب بعد الـ Catch التالي
اولا اظهار رساله للخطأ المقتنص وهو كالاتي
MsgBox(ex.Message)
وهنا تكمن الفائده بحيث لو كان هناك خطأ نريده ان يتراجع عن التغييرات .. ويتم ذلك بالكود التالي
t.Rollback()
ثم اكتب بعد الـ Finally التالي لاغلاق الاتصال مع قاعدة البيانات
con.Close()
وفي المرفق تجد المثال وقاعدة البيانات داخل الـ Bin .. جرب شغل البرنامج وانقر على زر الامر ثم افتح قاعدة البيانات ستجد انه لم يضيف شئ .. عدل عبارة value الى values ستجد انه عدل في قاعدة البيانات .. حاول انك تهمش العبارات التي له علاقة بالـTransaction وذلك بوضع فاصلة علوية (single cottation ) ورجع الخطأ في كتابة value .. ستلاحظ ان البرنامج اضاف الى الجدول الاول دون الثاني وهذا ما نريد تجنبه
واخيرا ادعولي بالخير في الدنيا والاخره