设置过滤器会丢失下一个用户输入

时间:2015-11-13 15:13:57

标签: vba ms-access access-vba

在MS-Access 2010中,我有一个带有文本字段的表格形式,我想将其用作所显示数据的过滤器。当用户在此字段中输入值时,在其事件处理程序中,我设置了表单的过滤器和过滤器属性。一切都很好,除了一个用户输入(她离开过滤器控件的klick或按键)丢失 - 也就是说,她必须选项卡或单击两次才能离开该字段。她觉得这最烦人。

我在文本框中对所有事件进行了实验 - 要么它能够正常工作,要么只能用一个用户输入。

请参阅附件example database - 在过滤器框中输入过滤器值(例如字符' c')后,单击下方框(其他一些控件)。在该单击上,正确应用了过滤器,但光标仍保留在过滤器框中。它仅在第二次单击后移动到另一个控件。

如何避免丢失该用户输入?

1 个答案:

答案 0 :(得分:1)

我以前见过这种行为,但不记得我是否找到了一个好的解决方案(可能不是,或者我记得)。

一个不错的解决方法是分开两件事:

  1. 将焦点移至其他控件,触发Control_AfterUpdate
  2. 应用过滤器
  3. 使用Form_Timer事件程序。

    Me.TimerInterval = 1激活计时器,Me.TimerInterval = 0将其停用。

    Private Sub SetFilter()
        Me.Filter = "tText >= '" + Nz(Me.FilterMin) + "'"
        Me.FilterOn = True
    End Sub
    
    Private Sub FilterMin_AfterUpdate()
        ' Separate control navigation and filtering by using the Form.OnTimer event
        Me.TimerInterval = 1
    End Sub
    
    Private Sub Form_Timer()
        ' Deactivate timer (important!)
        Me.TimerInterval = 0
        Call SetFilter
    End Sub