【问题标题】:MS Access: Execute code for every instance of a subsubformMS Access:为子表单的每个实例执行代码
【发布时间】:2017-07-01 10:06:44
【问题描述】:

我有一个 MS Access 2013 表单,其中包含一个子表单(孙子)中的一个子表单,都在数据表视图中。

现在我在主窗体上有一些控件,应该能够过滤子窗体和孙窗体中的记录。

过滤 child 表单完全可以使用

Dim strSQL As String
strSQL = ...
Me!child.Form.RecordSource = strSQL
Me!child.Requery

但如果我想用

孙子设置过滤器
Dim strSQL As String
strSQL = ...
Me!child.Form!grandchild.Form.RecordSource = strSQL
Me!child.Form!grandchild.Requery

我收到错误 2455。使用 this question 我通过扩展子表单的一个或多个行解决了该错误。

但我现在想为每个孙行设置 RecordSource,而我当前的代码仅适用于第一行,与我正在展开/折叠的行无关。

如何更改主表单中每个子表单记录的 RecordSource,最好在过滤前不手动扩展任何行?

编辑: Gustav 提供了一个帮助我的无代码解决方案。尽管如此,我想知道如何从所有实例的主表单中更改孙子的表单属性。

【问题讨论】:

    标签: ms-access vba grandchild


    【解决方案1】:

    您不需要调整记录源。

    调整孙子窗体控件主/子链接字段,自动过滤。

    【讨论】:

    • 如果我没听错的话,这会将子表单连接到主表单的特定字段/ID。我不希望这样,我想使用 RecordSource 中的 WHERE 子句从子表单中显示满足特定条件的记录。
    • 无论哪种方式都可以。但是,使用 Master/Child 链接字段是一种零代码解决方案。
    • 假设我想显示子表单field1=foofield2=bar 中的所有数据,我该如何使用链接字段?
    • 设置主字段以包括具有“foo”和“bar”的控件。将子字段设置为包含字段 Field1、Field2。
    • 有一个小技巧:如果您过滤,比如说,三个字段:Field1,Field2,Field3,然后想要“全选”Field3,您不能只排除它。而是调整主/链接字段以仅过滤 两个 字段:Field1,Field2,Field2。仅过滤外键:Field1,Field1,Field1.
    猜你喜欢
    • 2014-12-07
    • 2023-03-21
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    相关资源
    最近更新 更多