我最近有一个关于如何从访问数据库中填充组合框的问题,但是我的最新问题对我来说有点棘手。
我需要从表中的两列填充我的下一个组合框,即:
原因代码 - 原因
所以我希望我的组合框看起来如下 -
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”
如果有可能以这种方式填写任何帮助将不胜感激,也值得赞赏的是,当我写回不同的数据库时,我将如何回写原因代码。
提前谢谢。
答案 0 :(得分:1)
您可以在从David Osborne建议的数据库中获取信息时执行此操作,也可以创建一个临时数据表,该数据表具有ID列(您的原因代码)和连接字符串作为显示列(将其命名为描述或随你)。一旦你设置了所有临时表列,你只需要遍历从数据库获得的所有记录,并手动将行添加到表中。
在任何一种情况下,您都希望将组合框上的.ValueMember
设置为表格中的reasoncode列,将.DisplayMember
设置为连接的原因码和描述。然后,当您想要保存回数据库时,只需从组合框中抓取.SelectedValue
,它就是当前选择的原因码。
答案 1 :(得分:0)
这里有一些选择。为什么不尝试在查询中连接两者:select reasoncode& “ - ”&来自...的推理。
您可以通过以下方式进一步开发: 选择原因代码,原因代码+“ - ”+ reasondesc作为描述......
然后使用reasoncode作为值成员,启用写回表,并将描述作为显示成员。