我想要检索数据并显示在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
空白值的屏幕截图:
我的数据库连接正常。
这是我在模块文件
上的连接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
答案 0 :(得分:1)
首先要注意的是,您尚未打开连接。这可能是根本原因。
也就是说,您使用.DataSource
更好地绑定ComboBox
的{{1}}并设置DataTable
和.DisplayMember
属性。
我还会考虑实施Using:
有时,您的代码需要非托管资源,例如文件句柄,COM包装器或SQL连接。使用块可确保在代码完成后处理一个或多个此类资源。这使得它们可供其他代码使用。
最后,请考虑为您的.ValueMember
提供更好的前缀。 ComboBox
通常用于txt
控件。我使用TextBox
,而其他人可能会使用cmb
。所以在这种情况下cbx
似乎更适合。
根据更改,您的代码将如下所示:
cmbAccountNo