我有2个按钮来过滤/取消过滤子窗体。事件代码(私有)正在调用公共函数:
我可以点击按钮来过滤/取消过滤,效果很好。
Option Compare Database
Option Explicit
Dim PartCalendarSubHeaderFilterOn As Boolean
Private Sub imgClearFilter_Click()
PartCalendarSubHeaderFilterOn = False
UpdatePartCalendarSubHeaderFilter
End Sub
Private Sub imgFavoriteFilter_Click()
PartCalendarSubHeaderFilterOn = True
UpdatePartCalendarSubHeaderFilter
End Sub
Public Sub UpdatePartCalendarSubHeaderFilter()
If PartCalendarSubHeaderFilterOn Then
PartCalendarSubHeaderFilter
Else
PartCalendarSubHeaderClearFilter
End If
Me.Requery
End Sub
Private Sub PartCalendarSubHeaderClearFilter()
Dim sql As String
sql = "... "
Me!frmPartCalendarSubHeaders.Form.RecordSource = sql
End Sub
Private Sub PartCalendarSubHeaderFilter()
Dim sql As String
sql = "... "
Me!frmPartCalendarSubHeaders.Form.RecordSource = sql
End Sub
从另一种形式的当前事件,我想通过调用public方法调用update filter sub来刷新部分日历:
Private Sub Form_Current()
...
'update part calendar
Form_frmPartCalendarSub.UpdatePartCalendarSubHeaderFilter
Me.Parent!frmPartCalendarSub.Requery
End Sub
当我在调试模式下逐行操作时,我可以看到它与我点击过滤器/未过滤器按钮完全相同的代码,通过行
Me!frmPartCalendarSubHeaders.Form.RecordSource = sql
和
Me.Requery
但子窗体没有按预期刷新。
有趣的事情:在调试模式下,如果我在输入代码行后重置一次Public Sub UpdatePartCalendarSubHeaderFilter()
然后它可以正常工作:我可以使用按钮进行过滤,当我选择另一个记录时,它会根据所选的过滤器正确刷新。
你有没有遇到过这个问题之王?我应该纠正什么才能使代码从头开始工作,而不必从调试模式中断?
答案 0 :(得分:0)
尝试替换
Form_frmPartCalendarSub.UpdatePartCalendarSubHeaderFilter
通过
Forms("frmPartCalendarSub").UpdatePartCalendarSubHeaderFilter
第一个命令不保证代码以正确的形式执行。最好避免使用Form类方法的直接调用,这可能会导致意想不到的结果。