我无法设定一定的组合框的行源我的形式(可以看作是一个连续的形式,尽管我也似乎在单形式模式一些问题)。

在组合框被绑定到名为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 ,但接受的解决方案并没有为我工作,要么。

有帮助吗?

解决方案

使用OnEnterOnExit事件来改变你的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

其他提示

我一直在挣扎着如何避免在数据表中留下的一次组合项目受到限制,无法找到一个很长一段时间的任何直接的选项的“空白” ......到现在为止!

离开所有的组合框中的可用选项,但加入的临时验证规则,使用成为当前,是卓有成效的完美。

希望这可防止有人撞他们的头在桌子上,只要有我

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top