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

لو سمحتوا شو حل هاي الرسالة الخطأ


System.InvalidOperationException: 'محاولة غير صالحة لاستدعاء MetaData في الوقت الذي يكون القارئ فيه مغلقًا.'
الرد }}}
تم الشكر بواسطة:
#2
ممكن صورة الكود المستخدم
الرد }}}
تم الشكر بواسطة: أشرف كريم 2
#3
(12-11-21, 12:50 PM)mrfenix93 كتب : ممكن صورة الكود المستخدم

كود :
Public Sub Insert_By_ID_2()
       Dim x As Integer
       'Try
       If Con.State = 1 Then Con.Close()
       Con.Open()
       Dim cmd As New SqlCommand(" select  *  from View_Store  where  Prd_Code=@Prd_Code", Con)
       cmd.Parameters.Clear()
       cmd.Parameters.AddWithValue("@Prd_Code", SqlDbType.VarChar).Value = Prd_Code.Text
       Dim adp As New SqlDataAdapter(cmd)
       Dim dr As SqlDataReader
       dr = cmd.ExecuteReader
       If dr.HasRows Then
           While dr.Read
               For i As Integer = 0 To dgvSale.Rows.Count - 1
                   If dgvSale.Rows(i).Cells(1).Value = Prd_Code.Text Then
                       dgvSale(5, i).Value = dgvSale(5, i).Value + 1
                       dgvSale(6, i).Value = dgvSale(5, i).Value * dgvSale(4, i).Value
                       dgvSale(8, i).Value = dgvSale(5, i).Value * dgvSale(7, i).Value
                       Exit Sub
                   End If
               Next
               dgvSale.Rows.Add()
               x = dgvSale.Rows.Count - 1
               dgvSale(0, x).Value = dr("Prd_ID").ToString
               dgvSale(1, x).Value = dr("Prd_Code").ToString
               dgvSale(2, x).Value = dr("Prd_Name").ToString
               dgvSale(3, x).Value = dr("UnitName").ToString
               dgvSale(4, x).Value = dr("SellPrice").ToString
               dgvSale(7, x).Value = dr("BuyPrice").ToString
               dgvSale(5, x).Value = 1
               dgvSale(6, x).Value = dgvSale(5, x).Value * dgvSale(4, x).Value
               dgvSale(8, x).Value = dgvSale(5, x).Value * dgvSale(7, x).Value
               TXTQty.Text = dr("Qty").ToString
               TXTPrdLimit.Text = dr("PrdLimit").ToString
               If Val(TXTQty.Text) < Val(TXTPrdLimit.Text) Then
                   TXTQty.BackColor = Color.Red
                   MsgBox(" تنبيه الكمية الموجودة اقل من حد الطلب", 0, "")
               Else
                   TXTQty.BackColor = Color.White
               End If
           End While
           dr.Close()
           Con.Close()
       Else
           MsgBox("كود المنتج الذي قمت بادخاله غير موجود", 0, "")
       End If
       'Catch ex As Exception
       'Con.Close()
       'End Try
   End Sub
الرد }}}
تم الشكر بواسطة:
#4
في اي سطر يشير طيب عند ظهور الخطأ
الرد }}}
تم الشكر بواسطة: أشرف كريم 2
#5
dgvSale(1, x).Value = dr("Prd_Code").ToString
اخوي الرسالة تظهر عند الغاء try
وعند تشغيل try لا تظهر الرسالة ولكن لا يتم تعبئة الجريد فيو
الرد }}}
تم الشكر بواسطة:
#6
While dr.Read اظنها تكفي عن استخدام dr.HasRows
الرد }}}
تم الشكر بواسطة: أشرف كريم 2
#7
(12-11-21, 10:51 PM)Anas Mahmoud كتب : While dr.Read اظنها تكفي عن استخدام dr.HasRows

نفس الخطأ بدون dr.HasRows
الرد }}}
تم الشكر بواسطة:
#8
تم الحل بتغيير الكود الى الكود التالي



كود :
 Private Sub INSERTDGV()

       Try
           If Con.State = 1 Then Con.Close()
           Con.Open()
           Dim cmd As New SqlCommand(" select  *  from View_Store  where  Prd_Code='" + Prd_Code.Text + "'", Con)
           Dim dt2 As New DataTable
           Dim adp As New SqlDataAdapter(cmd)
           adp.Fill(dt2)
           If dt2.Rows.Count > 0 Then
               For i As Integer = 0 To dgvSale.Rows.Count - 1
                   If dgvSale.Rows(i).Cells(1).Value = Prd_Code.Text Then
                       dgvSale(5, i).Value = Val(TXTQty.Text) + Val(dgvSale(5, i).Value)
                       dgvSale(6, i).Value = dgvSale(5, i).Value * dgvSale(4, i).Value
                       dgvSale(8, i).Value = dgvSale(5, i).Value * dgvSale(7, i).Value

                       Exit Sub
                   End If
               Next
               dgvSale.Rows.Add()
               Dim x As Integer
               x = dgvSale.Rows.Count - 1
               dgvSale(0, x).Value = dt2.Rows(0).Item("Prd_ID")
               dgvSale(1, x).Value = dt2.Rows(0).Item("Prd_Code")
               dgvSale(2, x).Value = dt2.Rows(0).Item("Prd_Name")
               dgvSale(3, x).Value = dt2.Rows(0).Item("UnitName")
               dgvSale(4, x).Value = dt2.Rows(0).Item("SellPrice")
               dgvSale(7, x).Value = dt2.Rows(0).Item("BuyPrice")
               dgvSale(5, x).Value = TXTQty.Text
               dgvSale(6, x).Value = dgvSale(5, x).Value * dgvSale(4, x).Value
               dgvSale(8, x).Value = dgvSale(5, x).Value * dgvSale(7, x).Value
               TXTQtyAVILABEL.Text = dt2.Rows(0).Item("Qty")
               TXTPrdLimit.Text = dt2.Rows(0).Item("PrdLimit")
               If Val(TXTQtyAVILABEL.Text) < Val(TXTPrdLimit.Text) Then
                   TXTQtyAVILABEL.BackColor = Color.Red
                   MsgBox(" تنبيه الكمية الموجودة اقل من حد الطلب", 0, "")
               Else
                   TXTQtyAVILABEL.BackColor = Color.White
               End If
               Prd_Code.Text = ""
               TXTQty.Clear()
               Prd_Code.Focus()
               InvoiceTotal()
               Invoicebuy()
           End If

           Con.Close()
       Catch ex As Exception
           Con.Close()
       End Try
   End Sub
الرد }}}
تم الشكر بواسطة: Anas Mahmoud



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


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