如何使用Access数据库中的记录填充ComboBox

时间:2017-06-06 04:26:32

标签: vb.net ms-access .net-4.0 vb.net-2010

我想要检索数据并显示在ComboBox中,但它显示为空白。

这是我的代码:

Imports System.Data.OleDb

Public Class frmAirwaybill

    Private Sub frmAirwaybill_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim cm As OleDbCommand = New OleDbCommand("select acc_no from tblshipper order by acc_no")
        cm.Connection = DBconnection()
        Dim dr As OleDbDataReader = cm.ExecuteReader
        Do While (dr.Read())
            txtAccountNo.Items.Add(dr.Item("acc_no"))
        Loop
        dr.Close()
        DBconnection.Close()
    End Sub
End Class*

txtAccountNo是ComboBox

当表单加载时,我想要的是从我的数据库加载accno。我该怎么做?

这是显示ComboBox空白值的屏幕截图:

its blank, i want they show the data in combo box

我的数据库连接正常。

这是我在模块文件

上的连接
Public Function DBconnection() As OleDbConnection

        Dim con As New OleDb.OleDbConnection
        Dim constring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\SmartshipG2.mdb"
        con = New OleDb.OleDbConnection(constring)
        con.Open()
        Return con

End Function

1 个答案:

答案 0 :(得分:1)

首先要注意的是,您尚未打开连接。这可能是根本原因。

也就是说,您使用.DataSource更好地绑定ComboBox的{​​{1}}并设置DataTable.DisplayMember属性。

我还会考虑实施Using

  

有时,您的代码需要非托管资源,例如文件句柄,COM包装器或SQL连接。使用块可确保在代码完成后处理一个或多个此类资源。这使得它们可供其他代码使用。

最后,请考虑为您的.ValueMember提供更好的前缀。 ComboBox通常用于txt控件。我使用TextBox,而其他人可能会使用cmb。所以在这种情况下cbx似乎更适合。

根据更改,您的代码将如下所示:

cmbAccountNo