Vba 如何设置两列组合框的值?
我使用的是未绑定表单。我有一个名为PO_Number的组合框和一个名为Vendor_Name的组合框。在订单号的更新后事件中,我使用订单号并获取供应商名称。在VBA中,我尝试如下设置组合框的值:Vba 如何设置两列组合框的值?,vba,ms-access,combobox,Vba,Ms Access,Combobox,我使用的是未绑定表单。我有一个名为PO_Number的组合框和一个名为Vendor_Name的组合框。在订单号的更新后事件中,我使用订单号并获取供应商名称。在VBA中,我尝试如下设置组合框的值: Vendor_Name.Value = rs!Vendor_Name 它会运行,但文本不会显示在组合框中 如何设置组合框的值 更新事件后: Private Sub PO_Number_AfterUpdate() On Error GoTo ErrorHandler Dim sql As Strin
Vendor_Name.Value = rs!Vendor_Name
它会运行,但文本不会显示在组合框中
如何设置组合框的值
更新事件后:
Private Sub PO_Number_AfterUpdate()
On Error GoTo ErrorHandler
Dim sql As String
Dim rs As DAO.Recordset
sql = "SELECT v.Vendor_Name, p.PO_Date, p.Description FROM PO as p INNER JOIN Vendor as v ON p.Vendor_Number = v.Vendor_Number WHERE p.PO_Number = " & PO_Number.value
Set rs = CurrentDb.OpenRecordset(sql)
If Not rs.EOF Then
rs.MoveFirst
Vendor_Name.Value = rs!Vendor_Name
PO_Date.value = rs!PO_Date
Description_Tb.value = rs!Description
End If
Exit Sub
ErrorHandler:
Err.Raise Number:=Err.Number, Description:=Err.Description
Exit Sub
End Sub
我看了几个答案,都是C或VB.Net的
编辑:
我考虑过使用文本框作为供应商名称,但我需要组合框,因为用户需要选择其他供应商
我还意识到我的供应商名称组合框有两列。第一个存储供应商编号,第二个存储供应商名称。绑定列设置为1供应商名称
如何设置具有两列的组合框的值
我想这样设置:
Vendor_Name.Column(0) = rs!Vendor_Number
Vendor_Name.Column(1) = rs!Vendor_Name
但它给了我:
运行时错误424。
所需对象
问题的根源是对列属性的误解。BoundColumn不是从零开始的 如果组合框RowSource为Selectvendor\u Number,则从Vendors中选择Vendor\u Name;BoundColumn为1,则它查看的是供应商编号,而不是供应商名称 列索引是从零开始的。所以Column0表示第一列 需要使用供应商编号设置combobox Value属性,然后将显示关联的供应商名称
使用绑定表单和绑定控件,将需要更少的VBA,许多复杂问题将消失。为什么需要使用供应商名称设置combobox?为什么不只是一个文本框?包括供应商名称作为采购订单编号列,然后文本框中的表达式按索引引用列,索引以0:=采购订单编号开始。列1。@June7刚刚更新了我的问题。我想到了一个解决办法,只需将禁用的文本框值设置为旧供应商,并使用组合框选择新供应商,但我想解决这个问题。好吧,我感到困惑。你使用的是未绑定表单吗?@June7我添加到我的问题和编辑部分的开头。希望这能让事情变得更清楚。是的,它是未绑定的。“供应商名称”组合框有2个字段,1个字段的宽度为0,绑定列设置为第二列“供应商名称”。问题中的更多细节。那么为什么要使用未绑定表单呢?我测试了将combobox设置为供应商编号和工作方式。拉取供应商编号而不是供应商名称。确保组合框的列宽为:0;1.