如何设置两列组合框的值?

How to set value of combobox with two columns?

我正在使用未绑定的表单。我有一个名为 PO_Number 的组合框和一个名为 Vendor_Name 的组合框。在 PO_Number 的更新后事件中,我使用 PO_Number 并获得 Vendor_Name。在 VBA 中,我尝试像这样设置组合框的值:

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。

编辑:
我考虑过为供应商名称使用文本框,但我需要组合框,因为用户需要 select 不同的供应商。

我还发现我的 Vendor_Name 组合框有两列。第一个存储 Vendor_Number,第二个存储 Vendor_Name。绑定列设置为 1 (Vendor_Name)。

如何设置具有两列的组合框的值?

我想这样设置:

Vendor_Name.Column(0) = rs!Vendor_Number
Vendor_Name.Column(1) = rs!Vendor_Name

但它给了我:

Run time error 424.
Object required

问题的根源是对 BoundColumn 的误解 属性。 BoundColumn 不是从零开始的。

如果组合框 RowSource 是 SELECT Vendor_Number, Vendor_Name FROM Vendors; 并且 BoundColumn 是 1 那么它正在查看 Vendor_Number,而不是 Vendor_Name。

列索引从零开始。所以 Column(0) 指的是第一列。

需要设置组合框值 属性 和 Vendor_Number 然后关联的 Vendor_Name 将显示。

使用 BOUND 表单和 BOUND 控件,需要的 VBA 会更少,而且很多复杂情况都会消失。