1

我是一个 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

编辑 以下链接显示了正在发生的事情的屏幕截图以帮助澄清。 截图

4

1 回答 1

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

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

于 2013-06-13T17:13:56.437 回答