VB.NET 2010 - 从访问数据库中的多个列填充组合框

时间:2012-08-08 20:50:33

标签: database vb.net combobox

我最近有一个关于如何从访问数据库中填充组合框的问题,但是我的最新问题对我来说有点棘手。

我需要从表中的两列填充我的下一个组合框,即:

原因代码 - 原因

所以我希望我的组合框看起来如下 -

A - 帐户

S - 销售

ST - System Tidy

但是,原因代码和原因描述存储在我的数据库中的两个单独的列中,并且它们无法连接在一起。这是否可以在VB.Net中将多个列拉入一个组合框?

我目前的代码填充框(由LarsTech提供)

Protected Overrides Sub OnLoad(e As EventArgs)
    Dim ds1 As New DataSet()
    Dim ConnnectionString1 As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Admin\Desktop\CancellationsAndMovements\CancellationsandMovements\cancmov.mdb"

    Dim db1 As String = "SELECT reasoncode FROM Reason"

    Using cn1 As New OleDbConnection(ConnnectionString1)
        Using da As New OleDbDataAdapter(db1, cn1)
            da.Fill(ds1, "reasoncode")
        End Using
    End Using

    With drpMoveReason
        .DisplayMember = "reasoncode"
        .DataSource = ds1.Tables("reasoncode")
        .SelectedIndex = 0
    End With

    MyBase.OnLoad(e)

End Sub

我要拉的额外列名为“reasondesc”

如果有可能以这种方式填写任何帮助将不胜感激,也值得赞赏的是,当我写回不同的数据库时,我将如何回写原因代码。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在从David Osborne建议的数据库中获取信息时执行此操作,也可以创建一个临时数据表,该数据表具有ID列(您的原因代码)和连接字符串作为显示列(将其命名为描述或随你)。一旦你设置了所有临时表列,你只需要遍历从数据库获得的所有记录,并手动将行添加到表中。

在任何一种情况下,您都希望将组合框上的.ValueMember设置为表格中的reasoncode列,将.DisplayMember设置为连接的原因码和描述。然后,当您想要保存回数据库时,只需从组合框中抓取.SelectedValue,它就是当前选择的原因码。

答案 1 :(得分:0)

这里有一些选择。为什么不尝试在查询中连接两者:select reasoncode& “ - ”&来自...的推理。

您可以通过以下方式进一步开发:     选择原因代码,原因代码+“ - ”+ reasondesc作为描述......

然后使用reasoncode作为值成员,启用写回表,并将描述作为显示成员。