تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] ساعدوني في حل مشكلة حذف سطر من جدول
#1
مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة
الرد
تم الشكر بواسطة: egypt 2020 , egypt 2020
#2
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

حاول بالكود ة

كود :
Try

           con.Open()
           cmd.Connection = con
           cmd.CommandText = "delete from documents where id_doc= @id_doc"
           cmd.Parameters.Add(New SqlParameter("@id_doc", TextBox1.Text))
           cmd.ExecuteNonQuery()
           con.Close()
           MsgBox("تم حذف البيانات")
       Catch ex As Exception
           MessageBox.Show("يوجد خطا اثناء الحذف..." & ex.Message, "رسالة خطا")
       Finally
           con.Close()
           Exit Sub
       End Try
الرد
تم الشكر بواسطة: ابراهيم ايبو , tahaayyoub
#3
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

اذا كان نص فيجب وضع علامه '   '  قبل النص مثل
كود :
Dim cq As String = "delete from documents where id_doc='" & TextBox1.Text & "' "
الرد
تم الشكر بواسطة: ابراهيم ايبو , egypt 2020 , tahaayyoub
#4
(01-02-20, 04:46 PM)alsalamoni كتب :
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

اذا كان نص فيجب وضع علامه '   '  قبل النص مثل
كود :
Dim cq As String = "delete from documents where id_doc='" & TextBox1.Text & "' "

ماعتقدش هينفع لو نص محتاج تحذف الزائد عن المقطع

يعني لو الخلية CV
واخري CV1


كود :
Dim cq As String = "delete from documents where id_doc '" & TextBox1.Text.Trim & "' "
الرد
تم الشكر بواسطة: tahaayyoub , tahaayyoub
#5
(01-02-20, 04:51 PM)egypt 2020 كتب :
(01-02-20, 04:46 PM)alsalamoni كتب :
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

اذا كان نص فيجب وضع علامه '   '  قبل النص مثل
كود :
Dim cq As String = "delete from documents where id_doc='" & TextBox1.Text & "' "

ماعتقدش هينفع لو نص محتاج تحذف الزائد عن المقطع

يعني لو الخلية CV
واخري CV1


كود :
Dim cq As String = "delete from documents where id_doc '" & TextBox1.Text.Trim & "' "

هو قال ان النوع varchar ومعروف ان اي نص يتم وضعه بين '      '

لكن وضع شرط جميل وهو
اذا تاكد الحذف (واستخدم >0 ) يظهر رسالة التاكيد

لانه احيانا لا يتم الحذف لاسباب مختلفه



(01-02-20, 04:36 PM)egypt 2020 كتب :
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

حاول بالكود ة

كود :
Try

           con.Open()
           cmd.Connection = con
           cmd.CommandText = "delete from documents where id_doc= @id_doc"
           cmd.Parameters.Add(New SqlParameter("@id_doc", TextBox1.Text))
           cmd.ExecuteNonQuery()
           con.Close()
           MsgBox("تم حذف البيانات")
       Catch ex As Exception
           MessageBox.Show("يوجد خطا اثناء الحذف..." & ex.Message, "رسالة خطا")
       Finally
           con.Close()
           Exit Sub
       End Try

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

وانت استخدمت الباراميتر وهذا هو الاستخدام الصحيح، احسنت Heart
الرد
تم الشكر بواسطة: egypt 2020 , tahaayyoub , tahaayyoub
#6
(01-02-20, 05:12 PM)alsalamoni كتب :
(01-02-20, 04:51 PM)egypt 2020 كتب :
(01-02-20, 04:46 PM)alsalamoni كتب :
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

اذا كان نص فيجب وضع علامه '   '  قبل النص مثل
كود :
Dim cq As String = "delete from documents where id_doc='" & TextBox1.Text & "' "

ماعتقدش هينفع لو نص محتاج تحذف الزائد عن المقطع

يعني لو الخلية CV
واخري CV1


كود :
Dim cq As String = "delete from documents where id_doc '" & TextBox1.Text.Trim & "' "

هو قال ان النوع varchar ومعروف ان اي نص يتم وضعه بين '      '

لكن وضع شرط جميل وهو
اذا تاكد الحذف (واستخدم >0 ) يظهر رسالة التاكيد

لانه احيانا لا يتم الحذف لاسباب مختلفه



(01-02-20, 04:36 PM)egypt 2020 كتب :
(01-02-20, 03:37 PM)tahaayyoub كتب : مشكلة في حذف سطر من جدول
الجدول اسمه documents
المفتاح id_doc
النوع Nvarchar
*************************
 Private Sub DeleteRecord()
        Try
            Dim RowsAffected As Integer = 0
            Connect()
            con.Open()
            Dim cq As String = "delete from documents where id_doc=" & TextBox1.Text & ""
            cmd = New SqlCommand(cq)
            cmd.Connection = con
            MsgBox("sava")
            RowsAffected = cmd.ExecuteNonQuery()
            If RowsAffected > 0 Then
                MessageBox.Show("تم حذف طرف من الجدول", "السجل", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
                VoirAffaires1.DataGridView2.Refresh()
            Else
                MessageBox.Show("المعني غير موجود", "حاول", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Reset1()
            End If
            If con.State = ConnectionState.Open Then
                con.Close()

            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
        End Try
    End Sub
********************************************
تظهر رسالة الخطا التالي
********************************************
convertion failed when converting the nvarchar value '20/0001' to data type int 
علما اني ان الجدول به ترقيم خاص على شكل سنة/ترقيم تسلسلي  20/0001 وهو من النوع NVARCHAR
السطر المراد حذفه ماخوذ من داتا قريد في فورم اخر


الرجاء المساعدة

حاول بالكود ة

كود :
Try

           con.Open()
           cmd.Connection = con
           cmd.CommandText = "delete from documents where id_doc= @id_doc"
           cmd.Parameters.Add(New SqlParameter("@id_doc", TextBox1.Text))
           cmd.ExecuteNonQuery()
           con.Close()
           MsgBox("تم حذف البيانات")
       Catch ex As Exception
           MessageBox.Show("يوجد خطا اثناء الحذف..." & ex.Message, "رسالة خطا")
       Finally
           con.Close()
           Exit Sub
       End Try

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

وانت استخدمت الباراميتر وهذا هو الاستخدام الصحيح، احسنت Heart

اشكرك علي ردك كلنا هنا للتعاون معا .

انا وضحتة الفكرة فقت ويقدر يزود البراميتر بالشكل الي حابب يضيفة .
الرد
تم الشكر بواسطة: tahaayyoub
#7
جرب الكود دة ردا علي رسالتك

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


خلي المستخدم يحدد الصف قبل الحذف .


وعند الحذف استخدم الكود التالي :-






كود :
Try
Dim i As Integer
       i = DataGridView1.CurrentRow.Index
       'DataGridView1.Item(0, i).Value تاكد من انة المفتاح الخاص بالخلية المراد الحذف منها حيث 0 اول خلية بالصف حتي لو غير مرئية  
          con.Open()
          cmd.Connection = con
          cmd.CommandText = "delete from documents where id_doc= @id_doc"
          cmd.Parameters.Add(New SqlParameter("@id_doc", DataGridView1.Item(0, i).Value))
          cmd.ExecuteNonQuery()
          con.Close()
          MsgBox("تم حذف البيانات")
      Catch ex As Exception
          MessageBox.Show("يوجد خطا اثناء الحذف..." & ex.Message, "رسالة خطا")
      Finally
          con.Close()
          Exit Sub
      End Try
الرد
تم الشكر بواسطة:



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


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