2016-12-30 75 views
0

我发现了很多关于如何从父窗体过滤子窗体的教程和问题以及答案,但是我无法找到一种方法来使用位于完全不同子窗体的组合框过滤子窗体?如何过滤来自另一个子窗体访问中的组合框的子窗体?

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

我得到了所需的对象错误

地址2连接到我的地址表单 Combo51 companyID(控制源)持有该公司ID值

Combo51位于子窗体CompanyInformation和地址2位于子窗体地址

companyinformation窗体是父窗体的子窗体被调用的行情。所以引用是我的主要形式,有两个子表单CompanyInformation和Address。母公司形式的Id形式与CompanyInformation相关联;现在我想通过使用combobox51中的companyID从公司信息过滤到地址表单。

我有成功更新从子窗体到子窗体的文本和组合框,但我只是不太明白过滤方法。任何帮助,将不胜感激。

我使用备案源地址形式

+2

你能否介绍一下你的表单设计和表格结构的一些细节?您可能需要沿着'Me.Parent!Address.Form.Filter =“companyID =”&Combo51'的路线行事,尽管从您的有限说明中可以看出,您可能根本不需要子窗体 - 您是否显示多个地址/公司信息单个公司的记录? – Skippy

+0

我试过上面的代码没有错误,但它没有工作。我为每个公司显示多个地址。也有多个公司的多个报价。我需要能够浏览所有公司的所有不同地址以及那里的报价。因此,我将显示单个公司的多个地址/公司信息记录。 – ZacAttack

+0

对不起,仍然无法理解您的数据结构。请提供表格和关系,以使其更清楚并允许其他人提供帮助。当你谈论“多个公司的多个地址”和“多家公司的多个报价”时,这些都是多对多的关系吗?一家公司可以拥有多个地址吗?一个地址可以与多个公司相关吗?一个报价可以涉及多家公司?一家公司能得到多个报价吗?我猜测这些问题的答案并不全是“是”! – Skippy

回答

1

我对你的设计很感兴趣。我必须说,在行情和公司之间建立多对多关系是不寻常的,但如果这就是你需要的,那就去吧! [编辑:刚刚阅读你的最新评论,我可以看到你为什么现在这样做。]但我担心tblCAFQ中的“3个主键”。我将其解释为由三列AddressID,CompanyID和AddressTypeID组成的“复合主键”,在这种情况下,我希望这三个ID也是其他表的外键。您已经确定CompanyID和AddressTypeID确实是外键,分别指向tblCompanyNames和tblAddressType,但您没有说明AddressID指向的位置。我怀疑AddressID实际上是主键,其他两个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)子窗体?

+0

我仍然无法使用它,我已完成访问!感谢您的帮助,但它是一个接一个的路障。它做了一些不错的事情,但男人!哦,就我的许多人来说,引用和客户并不确定我是否会使用它,但逻辑是这样的。我们工厂的工业绘画。有时候我们会为一家外包工作的公司引用一个项目给我们。因此,A公司得到一份工作,从B公司建造一些东西。A公司完成它,然后让我们画它。这个报价是针对A公司的,但是最后知道它最终会结束一个B – ZacAttack

+0

很抱歉听到这个消息。我知道Access有时候会有些古怪,但是您必须记住它主要是一个关系数据库系统(内置了表单和报表设计器),因此您确实需要让您的数据模型适合于使您的表单设计更容易。丢失多对多报价 - 客户关系的一种可能方法是使用tblProject来描述项目并记录最终客户是谁(B)。每个项目都可以有许多行情;对每一个报价你记录你直接工作的人(A)。然后是QuoteDetails表格,每个部分一个。 – Skippy

+0

我认为我最大的问题是我的数据模型,我目前正在尝试重做它,使我更有意义,我刚刚跳入数据库头。我想我会用tblProject去看起来更合乎逻辑。我决定重建我的访问数据库,并希望通过更好的设计消除这些问题 – ZacAttack

0

尝试也查询转FilterOn:

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

我试过了上面的代码,但是输入了一个值作为筛选器的窗口 – ZacAttack

+0

然后你可能没有一个名为Address2的字段。 – Gustav

相关问题