تقييم الموضوع :
  • 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
علشان لو فيه خطاء اى كود يتراجع عن الآخر
ولم يتم حفظ فى جدول. والجدول الآخر لا
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  حل مشكلة الفاصلة الرقمية لحقل العملة عبدالكريم برشدان 1 98 20-01-22, 09:18 PM
آخر رد: ابراهيم ايبو
  مشكلة كل ماأعرض الصور يتم عرض الصور التي قبلها دون افراغ listview ماهو السبب cordava 1 197 19-01-22, 01:37 AM
آخر رد: رضوان الجماعي
Lightbulb [VB.NET] الرجاء المساعدة أخوتي عندي مشكلة DATA_GRID_VIEW RADOS 4 275 19-01-22, 12:41 AM
آخر رد: رضوان الجماعي
  مشكلة في توليد arabic qr code osmana2005 8 5,546 15-01-22, 02:59 PM
آخر رد: sh.alq
  [VB.NET] مشكلة لم استطع اضافة print form للفيجوال 2019 ولا 2022 bilgacim 0 124 10-01-22, 10:24 PM
آخر رد: bilgacim
  مشكلة في ترقيم الصور cordava 0 212 21-12-21, 09:07 AM
آخر رد: cordava
Photo مشكلة حفظ الصور في مجلد cordava 3 332 18-12-21, 10:07 PM
آخر رد: ابراهيم ايبو
  [سؤال] مشكلة في screenshot Hatem Zahran 2 328 30-11-21, 09:44 PM
آخر رد: Hatem Zahran
  [سؤال] مشكلة اضافة نص و صورة ادخل الاداء RichTextBox alims 10 601 24-11-21, 02:01 PM
آخر رد: alims
  [SQL] مشكلة بطئ سرعة البرنامج المتصل بقاعدة بيانات على النت mmaalmesry 4 558 24-11-21, 12:23 PM
آخر رد: mmaalmesry

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


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