VB.Net 2010 - 从MDB访问数据库填充ComboBox

时间:2012-08-08 19:42:46

标签: vb.net drop-down-menu combobox

我目前正在尝试从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

正如你可能从上面收集的那样,我目前正处于学习的过程中,所以我上面的很多内容都是为了让我理解。实际上,我从谷歌上发现的类似问题中提取了上述代码。任何帮助将不胜感激,即使它只是指向我可以学习为自己这样做的资源。

提前感谢你。

1 个答案:

答案 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值。