试图更新组合框更新表?

时间:2013-06-13 16:39:03

标签: vba ms-access access-vba

我是一个Access新手,但我正在慢慢追赶。我正在重建工作中的数据库,我正在努力解决有关更新组合框的奇怪问题。

我想要做的是将工厂的每个部分分开,然后按机器名称分开。为此,我使用两个组合框;第一个列出了各种复合体,第二个列出了该复合体可用的各种机器。通过选择一个复合体,然后选择一台机器,我想列出与该特定机器相关的所有数据。

然而,我遇到的问题是,在尝试更新机器组合框时,我的表单中的一个文本框(我已设置为已锁定)将使用所选复合体的索引进行更新。然后该索引替换复杂表中第一个条目的名称。

下面列出了用于更新机器组合框的VBA代码。 (在将此代码合并到多个项目表单的标题之前,我没有任何问题。)

Private Sub cboComplex_AfterUpdate()
Me.cboMachine.RowSource = "SELECT MachineName FROM" & _
                            "Machine WHERE ComplexID = " & Me.cboComplex & _
                            "ORDER BY MachineName"
Me.cboMachine = Me.cboMachine.ItemData(0)
End Sub

修改 以下链接显示了有助于澄清的内容的屏幕截图。 Screenshots

1 个答案:

答案 0 :(得分:1)

这是一个答案和评论的跳舞,但我的评论变得越来越长,我喜欢格式化,所以我发布它。

乍一看,您应该对过滤框(机器和复合体)使用未绑定控件。

表单的记录源(假设机器表数据,您可以根据需要定制它)可以绑定到以下内容:

SELECT * FROM machine WHERE complexID = [Forms]![myForm]![cboComplex] AND Machine = [Forms]![myForm]![cboMachine]

你可以form.requery更新这些方框。

或者你可以像Select * FROM Machine那样更通用,只需在更新机器组合框后设置表单的Filter属性。

因此,在更新组合框后(您可以单独过滤每个组合框,或假设/要求从每个框中选择),您可以设置过滤器。

 Me.Filter = "Complex = """ & Me.cboComplex & """"
 me.filteron = true

这些只是关于如何实现这一点的几点建议。至于你的过滤器框更新你的表数据,我假设它是因为你将它们绑定到你的表:)