在以连续形式检查记录框时,我需要立即过滤连续表单的问题。我在Access 2013中有一个调查问卷,其中包含父母问题和子问题以及复选框,以回答特定问题的“是”。每个问题都是连续形式的单一记录。除非检查父问题,否则表单将过滤掉子查询。这是通过使用Dlookup函数来查找是否检查特定问题ID的复选框,然后重新过滤表单以显示原始问题以及子问题。
表单会过滤正确的信息,但在选中复选框后,我无法立即过滤。它在On Load事件中正确过滤。我也将过滤器应用于On点击复选框。我认为使用On Click时出现问题,因为Access无法识别查询的复选框值,直到我单击表单上的另一个控件,因此在检查框时它不会立即过滤但是当我点击下一个复选框时它会这样做。这让最终用户感到困惑,因为问题会出现在他们已经回答的问题之上。我已经尝试将过滤器VBA代码或重新查询功能复制到On Click,On Mouse Up,On Mouse Down,On Current和After Update事件中,但它们都不起作用。唯一可行的选项是On Paint事件,但随后表格不断闪烁,因为它不断地过滤它。
有人知道如何在选中复选框后立即过滤它吗?
这是我的过滤器代码:
Dim strA As String
Dim strB As String
Dim strC As String
Dim strD As String
strA = "[QuestionNo] Like 'EM?'"
strB = "[QuestionNo] Like 'EM*' AND [chkAnswer]=True"
If DLookup("chkAnswer", "qryQuestions", "[QuestionNo] = 'EM1'") = True Then
strC = "[QuestionNo] Like 'EM1?'"
Else
strC = "[QuestionNo] Like 'EM?'"
End If
If DLookup("chkAnswer", "qryQuestions", "[QuestionNo] = 'EM1a'") = True Then
strD = "[QuestionNo] Like 'EM1a*'"
Else
strD = "[QuestionNo] Like 'EM?'"
End If
Me.Filter = strA & " OR " & strB & " OR " & strC & " OR " & strD
Me.FilterOn = True
Me.Requery
提前致谢!