1

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

正如您可能从上面收集到的那样,我目前正在学习中,所以上面的很多内容我都在努力理解。我实际上是从我在谷歌上找到的一个类似问题中提取了上面的代码。任何帮助都将不胜感激,即使只是向我指出一个我可以学习为自己做这件事的资源。

提前谢谢你。

4

1 回答 1

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 具有您映射到数据源的 DisplayMember 和 ValueMember 属性。DisplayMember 是您在列表中看到的可见值,ValueMember 通常是可见属性的 ID 值。

于 2012-08-08T20:03:11.847 回答