无法设置ComboBox.RowSource上连续的形式
-
16-09-2019 - |
题
我无法设定一定的组合框的行源我的形式(可以看作是一个连续的形式,尽管我也似乎在单形式模式一些问题)。
在组合框被绑定到名为supplierID
字段,并且是指具有一个项目的所有可能的供应商的列表呈现给用户。我使用的组合框的行源是:
SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID
WHERE PartsSuppliers.partID = partID;
当我查看查询设计此查询(用PARTID硬编码),它工作正常 - 它选择了选择项目的所有可能的供应商,并且没有显示出任何其他物品。但是,当我看到在组合框中的项目,它显示的所有的存在于PartsSuppliers
表(它只有两列,部分映射到他们可能的供应商)的供应商。
我也尝试使用一些VBA在onfocus事件(硬编码在PARTID值)来设置组合框的行来源,但它似乎永远不会改变的行来源。我使用的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,但也不能工作。
我是什么做错了,或者是有,我应该看着做出正确的下拉一些其他的方式?
N.B。我已经看到了在组合框中自定义行源连续形式在Access ,但接受的解决方案并没有为我工作,要么。
解决方案
使用OnEnter
和OnExit
事件来改变你的RowSource
。
Private Sub supplierID_Enter()
supplierDropDown.RowSource = _
"SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
"FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID " & _
"WHERE PartsSuppliers.partID = " & partID & ";"
End Sub
Private Sub supplierID_Exit()
supplierDropDown.RowSource = _
"SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
"FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID;"
End Sub
其他提示
我一直在挣扎着如何避免在数据表中留下的一次组合项目受到限制,无法找到一个很长一段时间的任何直接的选项的“空白” ......到现在为止!
离开所有的组合框中的可用选项,但加入的临时验证规则,使用成为当前,是卓有成效的完美。
希望这可防止有人撞他们的头在桌子上,只要有我
不隶属于 StackOverflow