密钥上的火灾更新事件

时间:2011-01-13 00:43:22

标签: ms-access vba access-vba ms-access-2003

我的表单上有文本框(其ID中为“D_find”),我使用LIKE查询来过滤表单的数据。

我有以下代码:

Private Sub D_find_AfterUpdate()  

    Dim fil  

    fil = Me.D_find  

    If fil = Null Then  
        fil = ""  
    End If  

    Me.Filter = "DeloN Like '" + fil + "*'"  

End Sub

如果我按Tab键或将一些其他控件集中在表单上,​​它正常工作,但我需要在文本框的键盘事件后立即应用过滤器,但我不能,因为如果我在D_find_keyup中使用此代码我总是让D_find为NULL,但在当前场景中它总是不为null,除非它是空的。

当前场景中出现的第二个问题:在应用AfterUpdate并应用过滤器后,D_find文本框中的文本颜色将变为白色,并且在我在此文本框(D_find)中键入某些内容后切换为黑色或剪切一些文本。

-
我很抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

如果文本框仍有焦点,您可以使用:

NameOfControl.Text

这将包含刚刚输入的文字。但是,为什么必须立即应用过滤器,在Afterupdate中会更安全,因为您可以确保输入了所有数据,并且可以将焦点设置回搜索控件。

编辑评论

使用文本框,txtSearch和列表框,lst公司以下代码说明了上述内容:

Private Sub txtSearch_Change()
s = "SELECT Key, Company " _
  & "FROM tblCompanies " _
  & "WHERE Company LIKE '*" _
  & Replace(Me.txtSearch.Text, "'", "''") & "*'"

Me.lstCompanies.RowSource = s
End Sub

当字母添加到txtSearch时,列表框会返回逐渐减少的列表。