需要缩小出现在子窗体中的查询结果,然后选择并显示平均值

时间:2019-04-01 14:51:40

标签: database ms-access subquery keyword-search

我需要使用附加的关键字搜索框来缩小查询结果(显示在子窗体中)。然后,根据这些结果,我需要能够选择所需的记录,并显示在主搜索表单中选择的记录的计算平均值。

我进行了即时关键字搜索查询(键入时进行搜索以实时显示),并使用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破解它...

谢谢!

1 个答案:

答案 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事件的每次触发而立即更新。您需要设计一种不同的方法来实现文本框的“即时”方面,或者您必须采用另一种方法,例如传统的“搜索”按钮。