MS Access 子表单的多个析取条件
Multiple Disjunctive Conditions for MS Access Subforms
在配置 MS Access 子表单时,您可以 link 将父表单中的字段主控到子表单中的子字段。您也可以有多个 link,但多个 link 是连词,例如有 2 links 结果只有满足 link 1 和 link 2 的行。
我正在尝试使用多个析取 link(link 1 或 link 2)。
为了提供更多上下文,我有一个 table 来表达两个对象之间的关系,因此它包含两个引用相同 table 的外键。在子表单中,我想包含对象 ID 与任一外键匹配的行。
那是不可能的。
将 Master/Child link 字段视为 filter 或 inner join。
正如其他人所提到的,不可能使用 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 子表单时,您可以 link 将父表单中的字段主控到子表单中的子字段。您也可以有多个 link,但多个 link 是连词,例如有 2 links 结果只有满足 link 1 和 link 2 的行。
我正在尝试使用多个析取 link(link 1 或 link 2)。
为了提供更多上下文,我有一个 table 来表达两个对象之间的关系,因此它包含两个引用相同 table 的外键。在子表单中,我想包含对象 ID 与任一外键匹配的行。
那是不可能的。
将 Master/Child link 字段视为 filter 或 inner join。
正如其他人所提到的,不可能使用 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