如何从位于访问中另一个子窗体中的组合框中筛选子窗体?

how do I filter a subform from a combobox that is loctated in another subform in access?

我找到了很多关于如何从父窗体中过滤子窗体的教程和问答,但我无法找到一种方法来过滤带有位于完全不同子窗体中的组合框的子窗体?

Private Sub Combo51_AfterUpdate()
      Me.Parent!Address.Form.Filter!Address2.Value = Combo51.Value
End Sub

我收到一个需要对象的错误

Address2 在地址表中链接到我的公司 ID(控制源) Combo51 持有公司 ID 值

Combo51 位于子表单 CompanyInformation 中,Address2 位于子表单地址中

companyinformation 窗体是名为 Quotes 的父窗体的子窗体。所以引号是我的主窗体,有两个子窗体 CompanyInformation 和 Address。父表单的 Id 表单链接到 CompanyInformation;现在我想使用 combobox51 中的 companyID 从公司信息过滤到地址表单。

我成功地将文本和组合框从子窗体更新到子窗体,但我不太了解过滤方法。任何帮助将不胜感激。

我正在使用地址表单的记录源查询

也尝试打开 FilterOn:

Private Sub Combo51_AfterUpdate()
      Me.Parent!Address.Form.Filter = "Address2 = '" & Me!Combo51.Value & "'"
      Me.Parent!Address.Form.FilterOn = True
End Sub

我对你的设计很感兴趣。我必须说,在 Quotes 和 Companies 之间建立多对多关系是不寻常的,但如果这是您需要的,那就去做吧! [编辑:只需阅读您的最新评论,我就能明白您为什么现在这样做了。] 然而,我对 tblCAFQ 中的“3 个主键”感到担忧。我将其解释为由三列 AddressID、CompanyID 和 AddressTypeID 组成的 "composite primary key",在这种情况下,我希望这三个 ID 也是其他表的外键。你已经确定 CompanyID 和 AddressTypeID 确实是外键,分别指向 tblCompanyNames 和 tblAddressType ,但是你没有说 AddressID 指向哪里。我怀疑 AddressID 实际上是 the 主键,而其他两个 ID 应该只是外键。不管怎样,除此之外,根据您目前发布的信息,我认为您需要的是

Private Sub Combo51_AfterUpdate()
    Me.Parent!Address.Form.Filter = "CompanyID = " & Combo51
    Me.Parent!Address.Form.FilterOn = True
    Me.Parent!Address.Form.Requery    'You might not need this, I can't remember if it happens automatically after setting FilterOn = True
End Sub

这是假设 Combo51 的绑定列在 CompanyInformation 子窗体上获取 CompanyID(来自 tblCustomerNamesFromQuotes)?