MS Access 子表单的多个分离条件

Posted

技术标签:

【中文标题】MS Access 子表单的多个分离条件【英文标题】:Multiple Disjunctive Conditions for MS Access Subforms 【发布时间】:2019-09-05 19:22:06 【问题描述】:

在配置 MS Access 子表单时,您可以将父表单中的主字段链接到子表单中的子字段。您也可以有多个链接,但多个链接是连接的,例如拥有 2 个链接只会产生同时满足链接 1 链接 2 的行。

我正在尝试使用多个分离链接(链接 1 链接 2)。

为了提供更多上下文,我有一个表来表达两个对象之间的关系,因此它包含两个引用同一个表的外键。在子表单中,我想包含对象 ID 与任一外键匹配的行。

【问题讨论】:

我怀疑这是可能的。为什么要将 UNION 查询作为 RecordSource 表单?查询不可编辑。 @June7 我在我的问题中提供了我的理由。此外,我确信我不是唯一一个拥有与父表单的关系比 Access 链接系统更复杂的子表单的人。 联合查询是您解决问题的尝试,但您并不真正想要联合,如果您想要可编辑的数据集,当然不是。答案为表格提供了有效的解决方案。您是否考虑过如何在报告中呈现数据?这就是 UNION 可能有用的地方。 @June7 当我使用“联合”这个词时,我指的是行为而不是实际的 SQL 运算符。为了清楚起见,我编辑了标题。很抱歉对于这个误会。但是,是的,我确实希望子表单是可编辑的,这就是为什么我在下面发布的解决方案是理想的。 【参考方案1】:

这是不可能的。

将主/子链接字段视为过滤器内连接

【讨论】:

【参考方案2】:

正如其他人所提到的,除了内部连接之外,不可能使用 MS Access 的非常基本的链接系统来做任何事情。不过,我设法想出了一个简单的解决方法:使用父表单的Current 事件来更新子表单的RecordSource

此解决方案是通用的,可用于与父表单具有更复杂关系的子表单:

Private Sub Form_Current()
    Dim sql as String

    'This is the SQL statement for my situation, but you can write anything.
    sql = "SELECT * FROM SourceTable WHERE fk1 = " & Me![ID] & " OR fk2 = " & Me![ID]
    SubformName.Form.RecordSource = sql
End Sub

【讨论】:

以上是关于MS Access 子表单的多个分离条件的主要内容,如果未能解决你的问题,请参考以下文章

MS Access:具有多个条件的双循环查询以显示在表单上

MS Access:相关子表单的即时更新

在 ms-Access 中使用组合框创建搜索表单

根据带有if条件的多个文本框值将值分配给表单上的文本框-MS ACCESS

MS Access 中的子表单

MS Access 选项卡式表单多个 OnCurrent 触发