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

لو تركت الداتا جريد فارغة والتكوين الخاص بجدول الفاتورة 

ليحفظ فى جدول رأس الفاتورة ولم يحفظ فى جدول الفاتورة بدون ظهور خطاء

ارجو التعديل أو تبديل الكود بكود افضل لمنع حدوث الخطاؤ

كود :
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       'If conn.State = ConnectionState.Closed Then

       'End If
       conn.Open()
       '========تعريف المتغيرات
       Dim sql As String = ""
       Dim adp As SqlDataAdapter
       'dim DS as datatable
       Dim DT As DataTable
       Dim sqlCmd As SqlCommand
       Dim CmdBuild As SqlCommandBuilder
       Dim trans As SqlTransaction = conn.BeginTransaction
       Try
           '=========اضافة الجدول الرئيسي

           sqlCmd = New SqlCommand("select * from orderHiderTbl", conn)
           sqlCmd.Transaction = trans  ' فتح الترانسكشن
           adp = New SqlDataAdapter(sqlCmd)
           DT = New DataTable
           adp.Fill(DT)

           Dim DR = DT.NewRow
           DR!orderNumb = txtOrdNumb.Text
           DR!orderDate = ddate.Value.Date
           DR!userCode = txtUserCode.Text
           DR!CusCode = txtCusCode.Text
           DR!UserName = txtUserName.Text
           DR!TotleOrder = txtTotlBill.Text
           DR!CountItem = txtCountItem.Text
           DR!TotlCommis = txtTotCoimm.Text
           DR!SumItem = txtSumItem.Text
           DT.Rows.Add(DR)
           CmdBuild = New SqlCommandBuilder(adp)
           adp.Update(DT)
           '=========حفظ جدول التفاصيل
           sql = "select * from OrdersTbl"
           sqlCmd = New SqlCommand(sql, conn)
           sqlCmd.Transaction = trans
           adp = New SqlDataAdapter(sqlCmd)

           DT = New DataTable
           adp.Fill(DT)
           For i = 0 To dvgOrder.Rows.Count - 1
               DR = DT.NewRow
               DR!orderNumb = txtOrdNumb.Text
               DR!ItemCode = dvgOrder.Rows(i).Cells(0).Value
               DR!ItemPrice = dvgOrder.Rows(i).Cells(5).Value
               DR!qty = dvgOrder.Rows(i).Cells(6).Value
               DR!SumPrice = dvgOrder.Rows(i).Cells(7).Value
               DR!TotlCommis = dvgOrder.Rows(i).Cells(8).Value
               DR!itemRequired = dvgOrder.Rows(i).Cells(9).Value
               DT.Rows.Add(DR)
               CmdBuild = New SqlCommandBuilder(adp)
               adp.Update(DT)
           Next
           trans.Commit()
           MsgBox("تمت عملية الاضافة بنجاح", MessageBoxIcon.Information, "رسالة تاكيد")
       Catch ex As Exception
           trans.Rollback()
           MsgBox(ex.Message, MessageBoxIcon.Error, "خطاء")
       End Try



   End Sub
الرد
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله
كودك سليم قد يكون في الترتيب
لدي برنامج اعمل فيه حاليا  ويعمل معي بشكل جيد ارفق لك مقطعا منه

PHP كود :
           Dim cmd1 As SqlCommand con.CreateCommand()
 
           cmd1.CommandTimeout 120
            Dim transaction 
As SqlTransaction con.BeginTransaction
            cmd1
.Connection con
            cmd1
.Transaction transaction 
الرد
تم الشكر بواسطة: new_programer , ابراهيم ايبو
#3
تسلم اخي.
لكن ما الحل هل اقوم بتبديل الاكواد
ولماذا عند ترك الداتا جريد فارغة لم يظهر خطاء وبيتم الحفظ فى جدول واحد
الرد
تم الشكر بواسطة: ابراهيم ايبو
#4
لماذا لا يوجد مساعدة من فضلكم
الرد
تم الشكر بواسطة:
#5
الترانزاكشن يربط مره واحده مع command واحد

انت عندما عملت SqlCommand في الجزء (حفظ جدول التفاصيل) فانت الغيت الاول

PHP كود :
   Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button2.Click
        If conn
.State ConnectionState.Closed Then conn.Open()
 
       '========تعريف المتغيرات
        Dim sqlCmd As New SqlCommand
        Dim trans As SqlTransaction = conn.BeginTransaction
        Try
            sqlCmd.Connection = conn
            sqlCmd.Transaction = trans  ' 
فتح الترانسكشن
            
'=========اضافة الجدول الرئيسي
            sqlCmd.CommandText = "INSERT INTO orderHiderTbl(orderNumb,orderDate,userCode,CusCode,UserName,TotleOrder,CountItem,TotlCommis,SumItem)VALUES(@orderNumb,@orderDate,@userCode,@CusCode,@UserName,@TotleOrder,@CountItem,@TotlCommis,@SumItem)"
            sqlCmd.Parameters.Clear()
            '
sqlCmd.Parameters.AddWithValue("@orderNumb"txtOrdNumb.Text)
 
           'sqlCmd.Parameters.AddWithValue("@orderDate", ddate.Value.Date)
            '
sqlCmd.Parameters.AddWithValue("@userCode"txtUserCode.Text)
 
           'sqlCmd.Parameters.AddWithValue("@CusCode", txtCusCode.Text)
            '
sqlCmd.Parameters.AddWithValue("@UserName"txtUserName.Text)
 
           'sqlCmd.Parameters.AddWithValue("@TotleOrder", txtTotlBill.Text)
            '
sqlCmd.Parameters.AddWithValue("@CountItem"txtCountItem.Text)
 
           'sqlCmd.Parameters.AddWithValue("@TotlCommis", txtTotCoimm.Text)
            '
sqlCmd.Parameters.AddWithValue("@SumItem"txtSumItem.Text)
 
           sqlCmd.ExecuteNonQuery()
 
           '=========حفظ جدول التفاصيل
            sqlCmd.CommandText = "INSERT INTO OrdersTbl(orderNumb,ItemCode,ItemPrice,qty,SumPrice,TotlCommis,itemRequired)VALUES(@orderNumb,@ItemCode,@ItemPrice,@qty,@SumPrice,@TotlCommis,@itemRequired)"
            For Each r As DataGridViewRow In dvgOrder.Rows
                If r.IsNewRow Then Exit For
                sqlCmd.Parameters.Clear()
                '
sqlCmd.Parameters.AddWithValue("@orderNumb"txtOrdNumb.Text)
 
               'sqlCmd.Parameters.AddWithValue("@ItemCode", r.Cells(0).Value)
                '
sqlCmd.Parameters.AddWithValue("@ItemPrice"r.Cells(5).Value)
 
               'sqlCmd.Parameters.AddWithValue("@qty", r.Cells(6).Value)
                '
sqlCmd.Parameters.AddWithValue("@SumPrice"r.Cells(7).Value)
 
               'sqlCmd.Parameters.AddWithValue("@TotlCommis", r.Cells(8).Value)
                '
sqlCmd.Parameters.AddWithValue("@itemRequired"r.Cells(9).Value)
 
               sqlCmd.ExecuteNonQuery()
 
           Next
            trans
.Commit()
 
           MsgBox("تمت عملية الاضافة بنجاح"MessageBoxIcon.Information"رسالة تاكيد")

 
       Catch ex As Exception
            trans
.Rollback()
 
           MsgBox(ex.MessageMessageBoxIcon.Error"خطاء")
 
       End Try
 
   End Sub 
الرد
تم الشكر بواسطة: new_programer
#6
ال transaction
علشان لو فيه خطاء اى كود يتراجع عن الآخر
ولم يتم حفظ فى جدول. والجدول الآخر لا
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] مشكلة في سحب s_token من الكوكيز trakktour 1 833 23-02-21, 05:50 AM
آخر رد: عادل526
  [سؤال] مشكلة netsh advfirewall Vimtos 1 86 20-02-21, 10:56 PM
آخر رد: Vimtos
  مشكلة عند تصدير الداتا قريد إلى الاكسل يظهر الوقت مع التاريخ ؟ أبووسم 3 185 19-02-21, 08:53 PM
آخر رد: أبووسم
Heart [Acces2007] مشكلة في قاعدة البيانات ali bajmmal 3 254 02-02-21, 01:14 PM
آخر رد: ali bajmmal
  [سؤال] ممكن حل مشكلة فى كود الحفظ عاصم النجار 2 226 01-02-21, 07:07 AM
آخر رد: عاصم النجار
Photo مشكلة بعد تثبيت برنامجي في نظام التشغيل win10 بسام محمدغانم 1 186 22-01-21, 02:20 PM
آخر رد: nrkarat
  قمت بعمل مثال لإستخراج النصوص من الصورة واجهتني مشكلة اللغة العربية ماهو الحل mohamedgadain61 1 227 17-01-21, 07:54 AM
آخر رد: ابراهيم ايبو
  مشكلة تغير لون صف في داتاجريدفيو ahmed.fms 2 241 13-01-21, 02:31 PM
آخر رد: ahmed.fms
  [VB.NET] مشكلة عند عرض البيانات من الداتاجريد فيو ارهقتني محمد اسماعيل 12 614 08-01-21, 01:35 AM
آخر رد: محمد اسماعيل
  لدي مشكلة في كود تحديد مسار البرنامج أبو عبدالله الحلواني 4 425 01-01-21, 09:28 PM
آخر رد: سعود

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


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