วิธีแสดงแถวเฉพาะใน DataGridview จากฐานข้อมูล ms access ใน VB

ป้อนคำอธิบายรูปภาพที่นี่

สวัสดี ฉันกำลังพัฒนาโครงการ vb ฉันมีฐานข้อมูล MS-access ที่มี 3 สี (Itno, Name, Price) ในรูปแบบฉันได้เพิ่มกล่องข้อความสองกล่องและเพิ่มปุ่ม (TextBox2=Itno,Textbox=quantity) หากผู้ใช้ระบุ Itno และจำนวนแล้วคลิกปุ่มเพิ่ม ชื่อและราคาของ Itno ควรแสดงใน DataGridview พร้อมกับปริมาณที่ป้อนในกล่องข้อความ3

ฉันได้พยายามเท่าที่ความรู้ของฉัน แต่ฉันไม่สามารถแสดงข้อมูลใน Datagridview ได้ ใครก็ได้โปรดช่วยฉันด้วย...

นำเข้า System.Data.OleDb นำเข้า System.Data.DataTable

Public Class Form1
    Dim ad As System.Data.OleDb.OleDbDataAdapter
    Dim cm As System.Data.OleDb.OleDbCommand
    Dim co As System.Data.OleDb.OleDbConnection
    Dim dr As System.Data.OleDb.OleDbDataReader
    Dim tb As New DataTable("Table")

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        tb.Columns.Add("Iteam", Type.GetType("System.Int32"))
        tb.Columns.Add("Quantity", Type.GetType("System.String"))
        tb.Columns.Add("Price", Type.GetType("System.String"))
        DataGridView1.DataSource = tb
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        co = New System.Data.OleDb.OleDbConnection
        co.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" &
                "Data Source=C:\Users\Vicky\Desktop\db\bill\bill.mdb;"
        Try
            co.Open()
            Dim cd As String
            cd = "SELECT * FROM item WHERE Itno='" & TextBox2.Text & "'"
            cm = New OleDb.OleDbCommand(cd, co)
            dr = cm.ExecuteReader()
            While dr.Read()
                Dim n As String
                Dim p As String
                p = dr("Price").ToString
                n = dr("Name").ToString
                tb.Rows.Add(p.ToString, TextBox3.Text, n.ToString)
                DataGridView1.DataSource = tb

            End While
            co.Close()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

    End Sub
End Class

person Community    schedule 19.10.2016    source แหล่งที่มา
comment
คุณได้ระบุรหัสที่เกี่ยวข้องซึ่งดี แต่คุณไม่ได้ให้คำอธิบายใดๆ ซึ่งมีความสำคัญไม่แพ้กัน ให้คำอธิบายที่ชัดเจนและครบถ้วนถึงสิ่งที่คุณพยายามทำให้สำเร็จ และพฤติกรรมที่แท้จริงของโค้ดแตกต่างจากที่คุณคาดหวังไว้อย่างไร คนที่คิดว่าชื่อบอกว่ามันทั้งหมดไม่ค่อยถูกต้อง   -  person jmcilhinney    schedule 19.10.2016
comment
หากคุณต้องการเติม DataTable จากเครื่องอ่านข้อมูล ให้ใช้บรรทัดเดียว: myDataTable.Load(myDataReader)   -  person jmcilhinney    schedule 19.10.2016
comment
หาก DataTable ถูกผูกไว้กับ DataGrdiView แล้ว ก็ไม่มีเหตุผลที่จะผูกอีกครั้ง หากคุณต้องการเปลี่ยนแปลงข้อมูล เพียง Clear คอลเลกชัน Rows แล้วเติมข้อมูลใหม่ การเชื่อมโยงที่มีอยู่จะทำให้ข้อมูลใหม่ปรากฏในตาราง   -  person jmcilhinney    schedule 19.10.2016
comment
ขอบคุณพวกคุณช่วยให้โค้ดที่ถูกต้องในโครงการของฉันได้ไหม   -  person    schedule 19.10.2016
comment
ฉันไม่ชัดเจนมากเกี่ยวกับปัญหานี้   -  person    schedule 19.10.2016
comment
คุณกำลังบอกว่าสิ่งที่คุณต้องการจริงๆ คือสามารถเพิ่มแถวใหม่ลงในตารางจาก TextBoxes ได้ใช่หรือไม่ รหัสที่คุณมีทำให้ดูเหมือนว่าคุณต้องการใช้ TextBoxes เพื่อระบุแถวที่มีอยู่ที่จะรับจากฐานข้อมูล หากคุณไม่สามารถบอกเราได้อย่างชัดเจนว่าคุณต้องการอะไร เราก็จะไม่สามารถบอกคุณได้ว่าต้องทำอย่างไรอย่างน่าอัศจรรย์ ฉันเข้าใจได้ว่าคุณอาจไม่มีความชัดเจนเกี่ยวกับวิธีการบรรลุสิ่งที่คุณต้องการ แต่คุณจะไม่ชัดเจนได้อย่างไรว่าคุณต้องการให้แอปพลิเคชันทำงานอย่างไร   -  person jmcilhinney    schedule 19.10.2016
comment
ใช่ ฉันต้องการให้แถวที่มีอยู่แสดงใน gridview โดยใช้กล่องข้อความเพื่อระบุแถวที่ฉันต้องการ   -  person    schedule 19.10.2016
comment
เหตุใดคุณจึงเพิ่ม TextBox3.Text ลงใน DataTable ด้วยตนเอง คุณมักจะให้คำอธิบายที่ถูกต้องจริงๆ หรือฉันแค่เบื่อที่จะเสียเวลาถามคุณในสิ่งที่คุณควรอธิบายแล้วและยอมแพ้ หยุดคิดอธิบาย   -  person jmcilhinney    schedule 19.10.2016
comment
จากข้อยกเว้นของคุณ ฉันคิดว่าปัญหาแรกอยู่ในแบบสอบถามของคุณ คุณกำลังเปรียบเทียบตัวเลขกับสตริง: WHERE Itno='" & TextBox2.Text & "' (โปรดสังเกต ') หมายเหตุอีกประการหนึ่ง สำหรับคำถามของคุณ คุณพบกับ SQL Injection และคุณไม่ได้กำจัดออบเจ็กต์ของคุณอย่างถูกต้อง (เหมือนการเชื่อมต่อ)   -  person Matteo Umili    schedule 19.10.2016
comment
ว้าว...คุณเป็นคนที่มันได้ผล!!! ขอบคุณเจเอ็มซิลฮินนีย์ และมัตเตโอ อูมิลี   -  person    schedule 19.10.2016
comment
พวกคุณดีที่สุดแล้ว   -  person    schedule 19.10.2016


คำตอบ (1)


        Dim cd As String
        cd = "SELECT * FROM item WHERE Itno=" & TextBox2.Text & ""
        cm = New OleDb.OleDbCommand(cd, co)
        dr = cm.ExecuteReader
        While dr.Read()
            Dim n As String
            Dim p As String
            p = dr("Price").ToString
            n = dr("Name").ToString
            Dim R As DataRow = tb.NewRow
            R("Name") = n.ToString
            R("Quantity") = TextBox3.Text
            R("Price") = p.ToString
            tb.Rows.Add(R)
            DataGridView1.DataSource = tb

ฉันแก้ไขรหัสแล้ว

person Community    schedule 20.10.2016