我目前正在尝试从MDB数据库填充VB.Net中表单上的一个下拉框,用于我正在工作的项目。
我在一个名为“cancmov”的数据库中有一个名为“Months”的表,而我想要拉出的字段叫做MoveMonth。
我使用的当前代码是: -
Private Sub drpMovedFrom_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles drpMovedFrom.SelectedIndexChanged
Dim ConnnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Admin\Desktop\CancellationsAndMovements\CancellationsandMovements\cancmov.mdb"
Dim db As String = "SELECT MoveMonth FROM Months"
Dim cn As New OleDbConnection(ConnnectionString)
Dim da As New OleDbDataAdapter(db, cn)
Dim ds As New DataSet()
da.Fill(ds, "MoveMonth")
With drpMovedFrom
.DataSource = ds.Tables("MoveMonth")
.SelectedIndex = 0
End With
End Sub
正如你可能从上面收集的那样,我目前正处于学习的过程中,所以我上面的很多内容都是为了让我理解。实际上,我从谷歌上发现的类似问题中提取了上述代码。任何帮助将不胜感激,即使它只是指向我可以学习为自己这样做的资源。
提前感谢你。
答案 0 :(得分:4)
一些关键的事情:
当下拉索引更改时,您正在调用此代码。可能不是你想要的,因为它总会把它设置回零。
另外,请尝试使用括号括起您的一次性物品:
Private ds As New DataSet()
Private ConnnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Admin\Desktop\CancellationsAndMovements\CancellationsandMovements\cancmov.mdb"
Protected Overrides Sub OnLoad(e As EventArgs)
Dim db As String = "SELECT MoveMonth FROM Months"
Using cn As New OleDbConnection(ConnnectionString)
Using da As New OleDbDataAdapter(db, cn)
da.Fill(ds, "MoveMonth")
End Using
End Using
With drpMovedFrom
.DisplayMember = "MoveMonth"
.DataSource = ds.Tables("MoveMonth")
.SelectedIndex = 0
End With
MyBase.OnLoad(e)
End Sub
此外,ComboBox具有您映射到DataSource的DisplayMember和ValueMember属性。 DisplayMember是您在列表中看到的值,ValueMember通常是可见属性的ID值。