Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > .NET Framework > Forum > INSERT ไม่ผ่านคับรบกวนช่วยดูให้ที นั่งมานานแล้วไม่ออกซักทีคับ ExecuteReader requires an open and available Connection. The connection's current state is closed.



 

INSERT ไม่ผ่านคับรบกวนช่วยดูให้ที นั่งมานานแล้วไม่ออกซักทีคับ ExecuteReader requires an open and available Connection. The connection's current state is closed.

 



Topic : 071238



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์




Code (VB.NET)
Dim sql As String
        Conn = New OleDbConnection()
        Conn.ConnectionString = strConnString
        Conn.Open()
      



        sql = "INSERT INTO [TB_Rent] (Cus_ID,Em_ID,Rent_Date) Values ('" & txtfind.Text & "','" & txtEmc.Text & "','" & Date.Today & "')"
        Dim cmd As OleDbCommand = New OleDbCommand(sql, Conn)
        Dim rdr As OleDbDataReader = cmd.ExecuteReader()
        'Conn.Open()
        Conn.Close()


        Dim sql2 As String
        Conn = New OleDbConnection()
        Conn.ConnectionString = strConnString
        Conn.Open()

        Dim i As Integer
        i = DataGridView1.CurrentRow.Index
        sql2 = "INSERT INTO [TB_RentDetail] (Book_ID,Rent_Price,Rent_Quantity,Rent_Date,Deadline_Date,Price_Penalty,Price_Total,Status) Values ('" & DataGridView1.Item(0, i).Value & "','" & DataGridView1.Item(1, i).Value & "','" & lbCheck.Text & "','" & DataGridView1.Item(4, i).Value & "','" & Date.Today.AddDays(+3) & "','" & DataGridView1.Item(5, i).Value & "','" & lbTotal.Text & "','" & CInt(txtRentc.Text) - CInt(lbCheck.Text) & "')"
        Dim cmd2 As OleDbCommand = New OleDbCommand(sql2, Conn)
       [font=Verdana] Dim rdr2 As OleDbDataReader = cmd.ExecuteReader()[/font]
        Conn.Close()


มันขึ้นว่า ExecuteReader requires an open and available Connection. The connection's current state is closed.



Tag : VB.NET









ประวัติการแก้ไข
2012-01-03 16:03:33
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-01-03 16:01:54 By : n_Plus View : 1787 Reply : 6
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

คุณปิดๆ เปิด ๆ Connection ครับ ลองดูว่ามันผิดตรงไหน จาก Error คือ คุณไม่ได้ทำการเปิด Connection หรือถุกปิดไปแล้วครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-03 17:35:44 By : webmaster
 


 

No. 2



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


ผมลองแก้ดูแล้วคับ แต่มันขึ้นว่า Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
ไม่รู้ว่าผิดตรงไหนคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-03 17:59:27 By : n_Plus
 

 

No. 3



โพสกระทู้ ( 40 )
บทความ ( 0 )



สถานะออฟไลน์


แก้มาเป็น

Code (VB.NET)
Dim sql As String
        Conn = New OleDbConnection()
        Conn.ConnectionString = strConnString
        Conn.Open()
      
        sql = "INSERT INTO [TB_Rent] (Cus_ID,Em_ID,Rent_Date) Values ('" & txtfind.Text & "','" & txtEmc.Text & "','" & Date.Today & "')"
        Dim cmd As OleDbCommand = New OleDbCommand(sql, Conn)
        Dim rdr As OleDbDataReader = cmd.ExecuteReader()


        Dim sql2 As String
        Conn = New OleDbConnection()
        Conn.ConnectionString = strConnString

        Dim i As Integer
        i = DataGridView1.CurrentRow.Index
        sql2 = "INSERT INTO [TB_RentDetail] (Book_ID,Rent_Price,Rent_Quantity,Rent_Date,Deadline_Date,Price_Penalty,Price_Total,Status) Values ('" & DataGridView1.Item(0, i).Value & "','" & DataGridView1.Item(1, i).Value & "','" & lbCheck.Text & "','" & DataGridView1.Item(3, i).Value & "','" & Date.Today.AddDays(+3) & "','" & DataGridView1.Item(4, i).Value & "','" & lbTotal.Text & "','" & CInt(lbCheck.Text) - CInt(txtRentc.Text) & "')"
        Dim cmd2 As OleDbCommand = New OleDbCommand(sql2, Conn)
        Dim rdr2 As OleDbDataReader = cmd.ExecuteReader()

        Conn.Close()


มันก็ยัง Error : There is already an open DataReader associated with this Command which must be closed first.

ผมมือใหม่คับรบกวนช่วยดูทีคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-03 18:11:01 By : n_Plus
 


 

No. 4

Guest


ถ้าให้ผม คิดน่ะคับ อาจจะตอบไม่ตรงประเด็นหน่อยแต่มีคำถาม นึงคับ

อย่างแรก ทำไม ไม่ใช่ cmd.ExcuteNonQuery() เพราะไม่เห็น เอา rdr ไปใช้ ทำอะไร ต่อเลยหนิคับ ถ้าเปลี่ยนไปใช้ ที่ผมบอก

ก็จะไม่ต้องประกาศ Dim rdr As OleDbDataReader เลยน่ะคับ ถ้าให้อธิบาย ที่ คุณใช้มันคือการบันทึกข้อมูลลง DB อะคับ

ไม่มีการ Return ค่ากลับมา เพราะฉะนั้นไม่จำเป็นต้องเก็บค่าก็ได้ คับ ที่ผม คิดว่ามัน error น่าจะมาจากตัวนี้คับ เพราะว่า คุณมีการใช้

cmd ตัวเดียวกันซึ่งในการ insert ครั้งแรก มันได้มี return ค่าอะไร ก็ตามกลับมาแล้ว ในตัวแปร cmd ก็เลย เก็บ ค่าอยู่ เสร็จแล้วหลังจากนั้น

คุณก็ใช้ cmd ตัวเดียวกันในการ query อีกมันก็เลย error มาว่า command already อะคับ ถ้าจะแก้ ผมก็แนะนำให้ cmd ค่าใหม่ คับ

ใช้ cmd ตัวเดิมนั้นแหละคับ แล้วมา new ค่าเหมือนกับ Dim cmd As OleDbCommand = New OleDbCommand(sql, Conn)

อีกครั้งคับ คิดว่าน่าจะหาย วิธีที่สองก็คือ เปลี่ยน เป็น cmd.ExcuteNonQuery() เลยคับ แล้วไม่ต้องประกาศ ตัวแปร Reader คับ

คิดว่าหาย เช่นกัน ลองดูคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-04 17:21:26 By : PaOAllY
 


 

No. 5

Guest


อ๋อ ผม เจอ และคับที่มันผิด คือ cmd.ExecuteReader() ลองดูคับ เห็น ตัวล่างคุณประกาศ ไว้เป็น cmd2 คับ แต่พอเวลา execute คุณใช้ cmd คับ โทษที อธิบายไปซะยาว ไม่ได้ดูโค๊ด ดีๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-01-04 17:24:05 By : PaOAllY
 


 

No. 6

Guest


ขึ้นError there is already an open datareader associated with this command which must be closed first[color=redควระปิด Debug ยังไงค่ะ รบกวนหน่อยค่ะ[/color]

Code (VB.NET)
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        If (txtMemberID.Text = "") Then
            MessageBox.Show("กรุณาระบุรหัสบัตรผู้ยืม !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
            txtMemberID.Focus()
            Exit Sub
        End If


        If lsvEquList.Items.Count = 0 Then
            MessageBox.Show("กรุณาป้อนรายการยืมอุปกรณ์ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
            txtEquID.Focus()
            Exit Sub
        End If

        Dim sqlLend As String = ""
        Dim comLend As SqlCommand = New SqlCommand


        With Conn
            If .State = ConnectionState.Open Then .Close()
            .ConnectionString = strConn
            .Open()
        End With

        Try
            If MessageBox.Show("คุณต้องการบันทึกรายการยืมอุปกรณ์ ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then

                AutoGenerateLendID()
                sqlLend = "INSERT INTO Lend (LendID,MemberID,NetReceived,Return_StatusAll) "
                sqlLend &= " VALUES('" & LastLendID & "',"
                sqlLend &= "'" & txtMemberID.Text & "',"
                sqlLend &= "0,'0')"

                With comLend
                    .CommandType = CommandType.Text
                    .CommandText = sqlLend
                    .Connection = Conn
                    .ExecuteNonQuery()
                End With

                Dim i As Integer = 0
                Dim tmpEquipmentID As String = ""

                Dim sqlEquipment As String = ""
                Dim tmpEquipmentInStock As Integer = 0
                Dim tmpEquipmentInLend As Integer = 0

                Dim tmpEquipmentNum As Integer = 0
                Dim tmpDateNum As Integer = 0
                Dim tmpAmount As Integer = 0
                Dim tmpSum As Integer = 0
                Dim tmpNet As Integer = 0

                Dim tmpLendDate As Date
                Dim tmpReturnDate As Date

                tmpLendDate = Date.Now


                For i = 0 To lsvEquList.Items.Count - 1
                    sqlLend = "INSERT INTO LendDetail(LendID,EquipmentID,Lend_Date,"
                    sqlLend &= " Return_Date,Lend_Num,AmountReceived,Return_Status)"
                    sqlLend &= " VALUES('" & LastLendID & "',"

                    tmpEquipmentID = lsvEquList.Items(i).SubItems(0).Text
                    tmpEquipmentNum = CInt(lsvEquList.Items(i).SubItems(2).Text)
                    tmpDateNum = CInt(lsvEquList.Items(i).SubItems(3).Text)
                    tmpAmount = CInt(lsvEquList.Items(i).SubItems(4).Text)

                    sqlLend &= "'" & tmpEquipmentID & "',"
                    sqlLend &= "'" & tmpLendDate & "',"

                    tmpReturnDate = tmpLendDate.AddDays(tmpDateNum)

                    sqlLend &= "'" & tmpReturnDate & "',"
                    sqlLend &= tmpEquipmentNum & ","
                    sqlLend &= tmpNet & ","
                    sqlLend &= "'0')"

                    With comLend
                        .CommandText = sqlLend
                        .ExecuteNonQuery()
                    End With

                    sqlEquipment = "SELECT EquipmentID,Equip_InStock,Equip_InLend FROM Equipment"
                    sqlEquipment &= " WHERE (EquipmentID='" & tmpEquipmentID & "')"

                    da.SelectCommand.CommandText = sqlEquipment
                    da.Fill(ds, "Equipment")

                    tmpEquipmentInStock = CInt(ds.Tables("Equipment").Rows(0).Item("Equip_InStock"))
                    tmpEquipmentInLend = CInt(ds.Tables("Equipment").Rows(0).Item("Equip_InLend"))
                    ds.Tables("Equipment").Clear()

                    sqlLend = "UPDATE Equipment"
                    sqlLend &= " SET Equip_InStock=" & tmpEquipmentInStock - tmpEquipmentNum & ","
                    sqlLend &= " Equip_InLend=" & tmpEquipmentInLend + tmpEquipmentNum
                    sqlLend &= " WHERE (EquipmentID='" & tmpEquipmentID & "')"

                    With comLend
                        .CommandText = sqlLend
                        .ExecuteNonQuery()
                    End With
                Next


                MessageBox.Show("บันทึกรายการยืมอุปกรณ์เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)

                If IsInstallPrinter() = True Then
                    If prDlg.ShowDialog = DialogResult.OK Then
                        prDoc.Print()
                    End If
                Else
                    MessageBox.Show("กรุณาติดตั้งเครื่อง Printer ก่อนสั่งพิมพ์เอกสาร", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If

                ClearAllMemberData()
                ClearAllEquipmentData()
                lsvEquList.Items.Clear()

                cboPosition.SelectedIndex = 0
                txtMemberID.Enabled = True
                txtMemberID.Focus()
            End If
        Catch ErrProcess As Exception
            MessageBox.Show("ไม่สามารถบันทึกรายการยืมอุปกรณ์ได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        Finally
            Conn.Close()
        End Try
    End Sub

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-01-30 02:52:01 By : Teaw
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : INSERT ไม่ผ่านคับรบกวนช่วยดูให้ที นั่งมานานแล้วไม่ออกซักทีคับ ExecuteReader requires an open and available Connection. The connection's current state is closed.
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่