تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيف أستخدم TRansaction حتى أضمن تطبيق الكود بشكل جيد
#1
السلام عليكم إخواني

أرجوا منكم قراءة هذ االكود فقد قمت بترتيبه حتى أسهل مساعدتكم لي

أقوم بترحيل قاعدة بيانات محلية إللى قاعدة أخرى بعيدة   (سطر بسطر)

كيف أستخدم TRansaction حتى أضمن تطبيق الكود بشكل جيد


ملاحظة : Transaction شغالة جيدا عندما تكون العملية على نفس القاعدة 
ملاحظة : قمت بوضع INSERT و UPDATE بذلك الشكل فقط لأوضح الفكرة 







جزاكم الله كل خير على مد يد المساعدة
الرد
تم الشكر بواسطة: ابراهيم ايبو
#2
السلام عليكم ورحمة الله وبركاته
اخي الكريم Sniper 
انت لم تذكر كيف تقوم بحفظ السجلات هل تأخذها من الداتا غرايد ام من الداتا تابل ؟ وهل في كل مرة تقوم بنقل سجل واحد ام كل السجلات دفعة واحدة
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: sniperjawadino
#3
شكرا أخي إبراهيم على الرد

البرنامج هو برنامج بيع لأحد المتاجر
كل ساعة هناك بيانات جديدة
فبالتالي وضعت الكود في TIMER و أقوم بنقل سجل واحد كل ثانية (يمكنني تطوير الفكرة في وقت لاحق)
آخد السجلات من الداتا غرايد اللتي تم تعبئتها من الداتا تابل
الرد
تم الشكر بواسطة: ابراهيم ايبو
#4
على العموم اخي sniper
اليك هذين الرابطين اجزى الله اصحابها كل الخير
https://www.youtube.com/watch?v=br8DkBklahE&t=735s

https://www.youtube.com/watch?v=eE6dPpK6O68&t=2141s
من ناحيتي ساضع لك كود حفظ استخدمته في حفظ راس الفاتورة وتفاصيل الفاتورة  حيث يتم الحفظ (عبر اللوب) من الداتاغرايد فيو فاما ان يتم الحفظ في الجدولين او لايحفظ في حال حدوث خطأ اتمنى ان يفيدك
دمت بخير ياغالي


كود :
Private Sub Btn_Save_Click(sender As Object, e As EventArgs) Handles Btn_Save.Click

       Dim trans As SqlTransaction = Cn.BeginTransaction
       Cmd = New SqlCommand
       Cmd.Connection = Cn
       Cmd.Transaction = trans
       Cn.Open()
       Try
           Cmd.CommandText = "insert into BuyMaster(Buy_Id,Buy_Code,Buy_Date,Imp_Name,Total_Buy) Values(@Buy_Id,@Buy_Code,@Buy_Date,@Imp_Name,@Total_Buy)"
           Cmd.Parameters.Add(New SqlParameter("@Buy_Id", SqlDbType.Int)).Value = Txt_Buy_id.Text
           Cmd.Parameters.Add(New SqlParameter("@Buy_Code", SqlDbType.NVarChar)).Value = Txt_Buy_Code.Text
           Cmd.Parameters.Add(New SqlParameter("@Buy_Date", SqlDbType.Date)).Value = CDate(Dtp_Buy_Date.Value.ToString("dd-MM-yyyy"))
           Cmd.Parameters.Add(New SqlParameter("@Imp_Name", SqlDbType.NVarChar)).Value = Cmb_Imp_Name.Text
           Cmd.Parameters.Add(New SqlParameter("@Total_Buy", SqlDbType.Decimal)).Value = Lbl_TotalBill.Text
           Cmd.ExecuteNonQuery()
           Cmd.Parameters.Clear()

           For i As Integer = 0 To Dgv_BuyBill.Rows.Count - 1
               Cmd.CommandText = "insert into BuyDetail(Buy_Bill_Code,Itm_Code,itm_Name,Itm_Price,Quantity,Amount,State) Values(@Buy_Bill_Code,@Itm_Code,@itm_Name,@Itm_Price,@Quantity,@Amount,@State)"

               Cmd.Parameters.Clear() ' هذا السطر مهم جدا لانه يفرغ الباراميترات في كل لفة من لوب مما يمنع تكرار القيم

               Cmd.Parameters.Add(New SqlParameter("@Buy_Bill_Code", SqlDbType.NVarChar)).Value = Dgv_BuyBill.Rows(i).Cells("Buy_Bill_Code").Value
               Cmd.Parameters.Add(New SqlParameter("@Itm_Code", SqlDbType.NVarChar)).Value = Dgv_BuyBill.Rows(i).Cells("Itm_Code").Value
               Cmd.Parameters.Add(New SqlParameter("@itm_Name", SqlDbType.NVarChar)).Value = Dgv_BuyBill.Rows(i).Cells("itm_Name").Value
               Cmd.Parameters.Add(New SqlParameter("@Itm_Price", SqlDbType.Decimal)).Value = CDbl(Dgv_BuyBill.Rows(i).Cells("Price").Value.ToString())
               Cmd.Parameters.Add(New SqlParameter("@Quantity", SqlDbType.Int)).Value = Dgv_BuyBill.Rows(i).Cells("Quantity").Value
               Cmd.Parameters.Add(New SqlParameter("@Amount", SqlDbType.Decimal)).Value = CDbl(Dgv_BuyBill.Rows(i).Cells("Amount").Value.ToString())
               Cmd.Parameters.Add(New SqlParameter("@State", SqlDbType.Bit)).Value = True
               Cmd.ExecuteNonQuery()
           Next
           trans.Commit()
           MessageBox.Show("تم حفظ البيانات بنجاح", "حفظ", MessageBoxButtons.OK, MessageBoxIcon.Information)

       Catch ex As Exception
           trans.Rollback()

           MessageBox.Show(ex.Message)
           'MessageBox.Show("خطأ في البيانات المدخلة لم يتم الحفظ ", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
       Finally
           If Cn.State = ConnectionState.Open Then Cn.Close()
       End Try
       Cn.Close()
   End Sub
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة:
#5
شكرا شكرا شكرا أخي ابراهيم على الرابطين و على الكود الذي إستخدمته أنت سيجعلني أصحح أخطائي
جزاك الله من فضله على مساعدتك

فقط مشكلتي في الكود هو إستخدام Transaction مع إثنان من قواعد البيانات واحدة محلية و الثانية بعيدة
Transaction بالطريقة العادية لا يستطيع عمل ذلك
وجدت في مواقع أجنبية إستخدام TransactionScope فقط لم أفهم الطريقة جيدا ب C#
الرد
تم الشكر بواسطة: ابراهيم ايبو
#6
اخي البرمجة بحر وما اوتيت منه الا نقطة 
لم استخدم حفظ بيانات في قاعدة محلية واخرى بعيدة بل لم استخدم الى الان سوى المحلية كوني لم انجز برامج بعد 
اشكرك على TransactionScope ساقرا عنها ان شاء الله 
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
تم الشكر بواسطة: sniperjawadino
#7
ابراهيم والله إستفدنا منك كثيرا
شكرا لك على مجهودك
الرد
تم الشكر بواسطة: ابراهيم ايبو


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ارجو منكم المساعده و التعديل علي الكود اليوم السابع 5 76 , 09:58 PM
آخر رد: trakktour
Exclamation [VB.NET] رسالة صغيرة تضهر بعض الأحيان Transaction sniperjawadino 2 117 13-06-21, 03:49 PM
آخر رد: sniperjawadino
  كيف استثني يوم الجمعة في الكود التالي abomo3ath 1 110 07-06-21, 11:51 PM
آخر رد: Fareed2
Exclamation [VB.NET] فكرة برمجية لنقل أسطر قاعدة البيانات بشكل مستمر sniperjawadino 2 338 13-05-21, 08:32 PM
آخر رد: sniperjawadino
  استفسار عن تطوير تطبيق مخازن لدعم الفوترة الالكترونية fahedksa 2 262 27-04-21, 12:17 AM
آخر رد: fahedksa
  [VB.NET] الكود المكافئ لعرض أسماء الجداول فى قاعدة البيانات mmaalmesry 4 460 23-04-21, 08:30 AM
آخر رد: d3vc0d
  [vb6.0] كود اذا لم يقم بتسجيل الدخول خلال 3 دقائق فانه سيتم الخروج من البرنامج بشكل تلقائي Rasha Hasanain 1 301 18-04-21, 04:31 PM
آخر رد: messry
  [VB.NET] أرجو التعديل في الكود المرفق معتز حسن 3 387 10-04-21, 06:33 PM
آخر رد: معتز حسن
  [VB.NET] اريد مساعدة في حل الكود asrar 6 944 27-03-21, 11:08 PM
آخر رد: asrar
  كيف أحط attachment في إيميل المرسل من البرنامج؟ ما هو الكود؟ Alziny 2 332 27-03-21, 05:17 AM
آخر رد: علي بنيان

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم