子表单多条件查询不起作用?

问题描述

我有一个表单 frmTagSearch,其中包含一个文本框 txtSearchTerm 一个搜索按钮 btnSearch一个子表单 subfrmTagQuery

子表单是使用向导从预先存在的查询 qryStakeholderTag 创建的。查询本身没有条件。

目的是使用 txtSearchTerm 的值让子表单显示 qryStakeholderTag 中的那些记录,其中 txtSearchTerm 值出现在任何组织、角色或通讯注释字段中.

我的代码如下(调试行是为了检查我是否有正确的引号)。在大多数情况下,这不会返回任何记录,尽管使用一个搜索查询确实会返回 3 条记录 - 不是“正确”的数字,但至少它似乎在做某事。

谁能告诉我我在这里做错了什么?我几乎从另一个论坛复制了代码,在那里它被标记为对类似问题的回答。

Private Sub btnSearch_Click()

If Me.txtSearchTerm = vbNullString Then Exit Sub

Me.subfrmTagQuery.Form.RecordSource = "SELECT * FROM qryStakeholderTag WHERE Organisation LIKE '*" & Me.txtSearchTerm & _
    "*' OR qryStakeholderTag.Role LIKE '*" & Me.txtSearchTerm & _
    "*' OR qryStakeholderTag.[Comms Notes] LIKE '*" & Me.txtSearchTerm & "*'"
Debug.Print Me.subfrmTagQuery.Form.RecordSource
Me.subfrmTagQuery.Requery

End Sub

解决方法

昨晚我有一个 eureka/d'oh 时刻。子表单所基于的查询有两个源表,StakeholdersOrganisationsStakeholders 有一个链接到 Organisations!Organisation 的查找字段;我已将 Stakeholders!Organisation 字段拉入查询中,因此 RecordSource 试图在仅包含查找 ID 索引的字段中查找搜索字符串。我的辩护是,除了有点慢之外,当然查询会显示预期的文本。

修改查询设计以包含 Organisations!Organisation 字段已解决该问题。 :)