منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : رسالة خطأ
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

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


System.InvalidOperationException: 'محاولة غير صالحة لاستدعاء MetaData في الوقت الذي يكون القارئ فيه مغلقًا.'
ممكن صورة الكود المستخدم
(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
في اي سطر يشير طيب عند ظهور الخطأ
dgvSale(1, x).Value = dr("Prd_Code").ToString
اخوي الرسالة تظهر عند الغاء try
وعند تشغيل try لا تظهر الرسالة ولكن لا يتم تعبئة الجريد فيو
While dr.Read اظنها تكفي عن استخدام dr.HasRows
(12-11-21, 10:51 PM)Anas Mahmoud كتب : [ -> ]While dr.Read اظنها تكفي عن استخدام dr.HasRows

نفس الخطأ بدون dr.HasRows
تم الحل بتغيير الكود الى الكود التالي



كود :
 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