我需要使用附加的关键字搜索框来缩小查询结果(显示在子窗体中)。然后,根据这些结果,我需要能够选择所需的记录,并显示在主搜索表单中选择的记录的计算平均值。
我进行了即时关键字搜索查询(键入时进行搜索以实时显示),并使用Query子表单构建了一个表单以显示结果。还尝试为第二个搜索关键字搜索框(标题为“过滤器”)重复代码的相同部分,但它保留基于原始数据而不是结果数据的重新查询。
下面查询中的代码。...
SELECT [Combined Source Data].*
FROM [Combined Source Data]
WHERE ((([Source] & [Class Code] & [Classification Title] & [Department/Division]) Like "*" & [Forms]![SearchForm]![Search].[Text] & "*" And ([Source] & [Class Code] & [Classification Title] & [Department/Division]) Like "*" & [Forms]![SearchForm]![FILTER].[Text] & "*"));
未绑定搜索框中的代码,它对事件过程进行了更改。...
Private Sub Filter_Change()
DoCmd.Requery "SearchQuery subform"
End Sub
Private Sub Search_Change()
DoCmd.Requery "SearchQuery subform"
End Sub
第二次关键字搜索应过滤结果,但不会过滤结果。请帮忙---试图在DAYS破解它...
谢谢!
答案 0 :(得分:1)
在SQL语句中嵌入对Access组件的引用时,通常会抑制此类引用中发生的任何错误。给定的SQL查询就是这种情况,因为除非控件具有焦点,否则Textbox.Text
属性是不可访问的。如果您尝试从其他VBA代码引用该控件,例如
Private Sub OtherField_GotFocus()
Debug.Print "Search: " & Me.Search.Text
End Sub
您应该得到一个错误
错误2185:除非控件具有焦点,否则无法引用该控件的属性或方法。
并且由于您以相同的方式引用了两个单独的Textbox控件,因此两个控件不能同时具有焦点,因此在查询中将始终存在一个或另一个未正确包含的值。问题文字说
...它保持基于原始数据而不是结果数据的重新查询。
但是我怀疑查询会根据哪个控件具有焦点而解析为... Like "*search_term*" and ... Like "**"
或... Like "**" and ... Like "**"
之类的东西,因此AND运算符的一侧始终为True。
尽管错误消息具有普遍性,但在没有控件具有焦点的情况下(因此在SQL语句内部),可以引用Value
属性。您的缺点是,它不会随着每个新的击键而立即更新,因此也不会随着Change
事件的每次触发而立即更新。您需要设计一种不同的方法来实现文本框的“即时”方面,或者您必须采用另一种方法,例如传统的“搜索”按钮。