我在我的表单上设置某个组合框的行源时遇到问题(被视为连续表单,尽管我在单表单模式下似乎也有一些问题)。
组合框绑定到一个名为 的字段supplierID
,旨在向用户显示一个项目的所有可能供应商的列表。我用于组合框的行源是:
SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID
WHERE PartsSuppliers.partID = partID;
当我在查询设计器中查看此查询(使用硬编码的 partID)时,它工作正常 - 它为所选项目选择所有可能的供应商,并且不显示任何其他项目。但是当我查看组合框中的项目时,它会显示表中存在的所有供应商PartsSuppliers
(它只有两列,将零件映射到可能的供应商)。
我还尝试在 OnFocus 事件中使用一些 VBA 设置组合框的 RowSource(硬编码 partID 值),但它似乎永远不会更改 RowSource。我正在使用的 VBA 代码是:
Private Sub supplierID_GotFocus()
Dim query As String
query = "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID "
query = query & "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID "
query = query & "WHERE (((PartsSuppliers.partID)=" & partID & "));"
supplierDropDown.RowSource = query
supplierDropDown.Requery
End Sub
我还尝试在 RecordSet 中打开该查询,然后将该 RecordSet 设置为组合框的 RecordSet,但这也不起作用。
我做错了什么,还是我应该考虑其他一些方法来做出正确的下拉?
注意,我已经在 Access 中看到了连续形式的组合框的自定义行源,但是该接受的解决方案也对我不起作用。