【问题标题】:VB.NET 2010 - Populating a combobox from multiple columns in an access databaseVB.NET 2010 - 从 access 数据库中的多列填充组合框
【发布时间】:2015-12-15 23:08:49
【问题描述】:

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

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

原因代码 - 原因

所以我希望我的组合框如下所示 -

A - 帐户

S - 销售

ST - 系统整洁

但是,原因代码和原因描述存储在我的数据库中的两个单独的列中,它们不能连接在一起。这在 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”

如果可以以这种方式填写任何帮助,将不胜感激,也将不胜感激在我写回不同数据库时如何仅写回原因代码的帮助。

提前谢谢你。

【问题讨论】:

    标签: database vb.net combobox


    【解决方案1】:

    您可以按照 David Osborne 的建议从数据库中获取信息,也可以创建一个临时数据表,其中包含一个 ID 列(您的原因代码)和连接的字符串作为显示列(将其命名为描述或任何)。设置好临时表列后,您只需要循环浏览从数据库中获取的所有记录,然后手动将行添加到表中。

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

    【讨论】:

      【解决方案2】:

      这里有几个选项。为什么不尝试在查询中连接两者:select reasoncode & "-" & reasondesc from...

      您可以通过以下方式进一步开发它: 选择reasoncode,reasoncode + " - " + reasondesc 作为描述 from...

      然后使用reasoncode作为valuemember,启用回写到table,description作为displaymember。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多