تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] خطا اثناء عملية الحذف
#1
السلام عليكم

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

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

الكود

كود :
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
الرد }}}
تم الشكر بواسطة:
#2
كود :
       If DATAG_CLIENONLIN.SelectedRows.Count > 0 Then
           MsgBox("الرجاء اختيار الصف المراد حذفة")
           Return
       End If
الرد }}}
تم الشكر بواسطة:
#3
(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
الرد }}}
تم الشكر بواسطة:
#4
(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 و النتيجة المعطاه
الرد }}}
#5
فقط استخدم الكود بهذا الشكل
كود :
   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() 

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
#6
(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() 

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

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

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

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

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  محتاج تعديل على كود الحذف new_programer 2 652 17-02-25, 06:50 PM
آخر رد: new_programer
  تعديل كود الحذف مصمم هاوي 2 478 10-01-25, 03:03 PM
آخر رد: عبد العزيز البسكري
  لايمكن الوصول للملف لأنه قيد الاستخدام بواسطة عملية أخرى صالح عبدالله 3 319 24-12-24, 12:17 AM
آخر رد: صالح عبدالله
  مشكلة ارفاق قاعدة البيانات sql في المشروع اثناء التحزيم 0 254 10-10-24, 03:28 PM
آخر رد: محمد العامر
  كيف يمكن اضافة عناصر للكومبوبوكس اثناء تشغيل البرنامج عن طريق المستخدم haithammoftah 3 2,157 30-09-24, 12:52 AM
آخر رد: asmarsou
  المساعدة في عملية طرح الوقت من خلال اثنين textbox جيولوجي مبتدئ 9 2,757 06-08-24, 07:43 PM
آخر رد: خالد كامل1
  سؤال عن عملية حذف سجل من قاعدة البيانات assuhimi 3 797 11-02-24, 08:43 PM
آخر رد: assuhimi
  مشكلة عدم اكتمال تنفيذ بسبب فصل الشبكة او التيار الكهربائي اثناء النتفيذ تناسيم 3 2,149 05-02-24, 10:04 PM
آخر رد: 01AHMED
  الحذف للسجل بشروط معينة محمد خيري 4 709 05-01-24, 04:46 AM
آخر رد: محمد خيري
Heart [C#.NET] حول بطئ عملية نقل البينات الكثيرة من أكسس إلى داتا غريد فيو بلال بلال 11 1,501 15-12-23, 07:47 AM
آخر رد: foad8920

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


يقوم بقرائة الموضوع: