问题描述
我有一个表单 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 时刻。子表单所基于的查询有两个源表,Stakeholders
和 Organisations
。 Stakeholders
有一个链接到 Organisations!Organisation
的查找字段;我已将 Stakeholders!Organisation
字段拉入查询中,因此 RecordSource 试图在仅包含查找 ID 索引的字段中查找搜索字符串。我的辩护是,除了有点慢之外,当然查询会显示预期的文本。
修改查询设计以包含 Organisations!Organisation
字段已解决该问题。 :)