منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] خطا اثناء عملية الحذف - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] خطا اثناء عملية الحذف (/showthread.php?tid=27209)



خطا اثناء عملية الحذف - محمد اسماعيل - 30-10-18

السلام عليكم

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

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

الكود

كود :
Private Sub BT_DELETE_Click(sender As System.Object, e As System.EventArgs) Handles BT_DELETE.Click
     


       Try
           Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
           Dim result As Integer = MessageBox.Show(" هل تريد حذف العميل رقم" & vbNewLine & DATAG_CLIENONLIN(1, indx).Value.ToString(), "حذف", MessageBoxButtons.YesNo)

           If (DATAG_CLIENONLIN.SelectedRows.Count > 0) Then
               If result = DialogResult.Yes Then

                   Dim com As New OleDbCommand("UPDATE CUSTOMERDETAILS_TB SET CUSTOMERDETALIS_SHOW=@CUSTOMERDETALIS_SHOW  WHERE CUSTOMERDETALIS_ID = @CUSTOMERDETALIS_ID", con) ',CUSTOMERDETALIS_DATE=@CUSTOMERDETALIS_DATE
                   Dim checkUPDAT As Boolean = False
                   con.Open()
                   com.Parameters.AddWithValue("@CUSTOMERDETALIS_SHOW", checkUPDAT)
                   com.Parameters.AddWithValue("@CUSTOMERDETALIS_ID", DATAG_CLIENONLIN(1, indx).Value.ToString())
                   com.ExecuteNonQuery()
                   conn()

                   MsgBox("delete succes")

                   con.Close()
               ElseIf result = DialogResult.No Then
                   Exit Sub
               End If
           Else
               MessageBox.Show("اختر عميل محدد", "خطا") : Exit Sub
           End If

       Catch ex As Exception
           MessageBox.Show(ex.Message)
       Finally
           con.Close()
       End Try
   End Sub



RE: خطا اثناء عملية الحذف - Rabeea Qbaha - 30-10-18

كود :
       If DATAG_CLIENONLIN.SelectedRows.Count > 0 Then
           MsgBox("الرجاء اختيار الصف المراد حذفة")
           Return
       End If



RE: خطا اثناء عملية الحذف - محمد اسماعيل - 30-10-18

(30-10-18, 11:42 PM)Rabeea Qbaha كتب :
كود :
       If DATAG_CLIENONLIN.SelectedRows.Count > 0 Then
           MsgBox("الرجاء اختيار الصف المراد حذفة")
           Return
       End If

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

كود :
  If DATAG_CLIENONLIN.SelectedRows.Count < 0 Then
               MsgBox("الرجاء اختيار الصف المراد حذفة")
               Return

           End If
الحل الوحيد بطريقة تخطي الخطا عشان يظهر عدة اختيار اي صف بالكود التالي


كود :
On Error Resume Next
       Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
       If (DATAG_CLIENONLIN.CurrentRow.Index < 0) Then
           MessageBox.Show("اختر عميل بالضغط علي اسمة", "خطأ") : Exit Sub
       End If

وانا عايز اعرف في فين المشكلة وانا لا احب استخدام الجملة

كود :
On Error Resume Next



RE: خطا اثناء عملية الحذف - Rabeea Qbaha - 31-10-18

(30-10-18, 11:54 PM)محمد اسماعيل كتب :
(30-10-18, 11:42 PM)Rabeea Qbaha كتب :
كود :
       If DATAG_CLIENONLIN.SelectedRows.Count > 0 Then
           MsgBox("الرجاء اختيار الصف المراد حذفة")
           Return
       End If

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

كود :
  If DATAG_CLIENONLIN.SelectedRows.Count < 0 Then
               MsgBox("الرجاء اختيار الصف المراد حذفة")
               Return

           End If
الحل الوحيد بطريقة تخطي الخطا عشان يظهر عدة اختيار اي صف بالكود التالي


كود :
On Error Resume Next
       Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
       If (DATAG_CLIENONLIN.CurrentRow.Index < 0) Then
           MessageBox.Show("اختر عميل بالضغط علي اسمة", "خطأ") : Exit Sub
       End If

وانا عايز اعرف في فين المشكلة وانا لا احب استخدام الجملة

كود :
On Error Resume Next

اضف msgbox بعد تعريف ال indix و تاكد من قيمة ال indix و النتيجة المعطاه


RE: خطا اثناء عملية الحذف - elgokr - 31-10-18

فقط استخدم الكود بهذا الشكل
كود :
   Private Sub BT_DELETE_Click(sender As System.Object, e As System.EventArgs) Handles BT_DELETE.Click
       Try
           If (DATAG_CLIENONLIN.SelectedRows.Count <= 0) Then
               MessageBox.Show("اختر عميل محدد", "خطا")
               Exit Sub
           Else
               Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
               Dim result As Integer = MessageBox.Show(" هل تريد حذف العميل رقم" & vbNewLine & DATAG_CLIENONLIN(1, indx).Value.ToString(), "حذف", MessageBoxButtons.YesNo)
               If result = DialogResult.Yes Then
                   Dim com As New OleDbCommand("UPDATE CUSTOMERDETAILS_TB SET CUSTOMERDETALIS_SHOW=@CUSTOMERDETALIS_SHOW  WHERE CUSTOMERDETALIS_ID = @CUSTOMERDETALIS_ID", con) ',CUSTOMERDETALIS_DATE=@CUSTOMERDETALIS_DATE
                   Dim checkUPDAT As Boolean = False
                   con.Open()
                   com.Parameters.AddWithValue("@CUSTOMERDETALIS_SHOW", checkUPDAT)
                   com.Parameters.AddWithValue("@CUSTOMERDETALIS_ID", DATAG_CLIENONLIN(1, indx).Value.ToString())
                   com.ExecuteNonQuery()
                   conn()
                   MsgBox("delete succes")
                   con.Close()
               ElseIf result = DialogResult.No Then
                   Exit Sub
               End If
           End If
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       Finally
           con.Close()
       End Try
   End Sub

ما الذى قد يسبب تلك الخطاء

السبب سيرجع بسبب كلاً من هذا الاسطر
كود :
               Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
               Dim result As Integer = MessageBox.Show(" هل تريد حذف العميل رقم" & vbNewLine & DATAG_CLIENONLIN(1, indx).Value.ToString(), "حذف", MessageBoxButtons.YesNo)

حيث انه تحتوى على 
PHP كود :
DATAG_CLIENONLIN.CurrentRow.Index
و
DATAG_CLIENONLIN
(1indx).Value.ToString() 

وبطبيعة الحال القيم هنا غير معرفة لانه لم يتم تحديد اى شئ
لذلك تم ادخل كل من هذه الاسطر داخل شرط التحقق فى حالة التحقق انه تم التحديد يقوم  بعد ذلك
تنفيذ الاكواد وبكده تكون تجنبت المشكلة التى تظهر

تحياتى لك
وتمنياتى لك التوفيق



RE: خطا اثناء عملية الحذف - محمد اسماعيل - 31-10-18

(31-10-18, 05:01 AM)elgokr كتب : فقط استخدم الكود بهذا الشكل
كود :
   Private Sub BT_DELETE_Click(sender As System.Object, e As System.EventArgs) Handles BT_DELETE.Click
       Try
           If (DATAG_CLIENONLIN.SelectedRows.Count <= 0) Then
               MessageBox.Show("اختر عميل محدد", "خطا")
               Exit Sub
           Else
               Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
               Dim result As Integer = MessageBox.Show(" هل تريد حذف العميل رقم" & vbNewLine & DATAG_CLIENONLIN(1, indx).Value.ToString(), "حذف", MessageBoxButtons.YesNo)
               If result = DialogResult.Yes Then
                   Dim com As New OleDbCommand("UPDATE CUSTOMERDETAILS_TB SET CUSTOMERDETALIS_SHOW=@CUSTOMERDETALIS_SHOW  WHERE CUSTOMERDETALIS_ID = @CUSTOMERDETALIS_ID", con) ',CUSTOMERDETALIS_DATE=@CUSTOMERDETALIS_DATE
                   Dim checkUPDAT As Boolean = False
                   con.Open()
                   com.Parameters.AddWithValue("@CUSTOMERDETALIS_SHOW", checkUPDAT)
                   com.Parameters.AddWithValue("@CUSTOMERDETALIS_ID", DATAG_CLIENONLIN(1, indx).Value.ToString())
                   com.ExecuteNonQuery()
                   conn()
                   MsgBox("delete succes")
                   con.Close()
               ElseIf result = DialogResult.No Then
                   Exit Sub
               End If
           End If
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       Finally
           con.Close()
       End Try
   End Sub

ما الذى قد يسبب تلك الخطاء

السبب سيرجع بسبب كلاً من هذا الاسطر
كود :
               Dim indx As Integer = DATAG_CLIENONLIN.CurrentRow.Index
               Dim result As Integer = MessageBox.Show(" هل تريد حذف العميل رقم" & vbNewLine & DATAG_CLIENONLIN(1, indx).Value.ToString(), "حذف", MessageBoxButtons.YesNo)

حيث انه تحتوى على 
PHP كود :
DATAG_CLIENONLIN.CurrentRow.Index
و
DATAG_CLIENONLIN
(1indx).Value.ToString() 

وبطبيعة الحال القيم هنا غير معرفة لانه لم يتم تحديد اى شئ
لذلك تم ادخل كل من هذه الاسطر داخل شرط التحقق فى حالة التحقق انه تم التحديد يقوم  بعد ذلك
تنفيذ الاكواد وبكده تكون تجنبت المشكلة التى تظهر

تحياتى لك
وتمنياتى لك التوفيق

ماقلتة اكثر من رائع
اسال الله ان يجعلة في ميزان حسناتك


RE: خطا اثناء عملية الحذف - elgokr - 31-10-18

(31-10-18, 07:14 AM)محمد اسماعيل كتب : ماقلتة اكثر من رائع
اسال الله ان يجعلة في ميزان حسناتك

اللهم امين ولنا جميعاً باذن الله

تحياتى لك
وتمنياتى لك التوفيق