如何设置两列组合框的值?
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 会更少,而且很多复杂情况都会消失。
我正在使用未绑定的表单。我有一个名为 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 会更少,而且很多复杂情况都会消失。