我的表单上有文本框(其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)中键入某些内容后切换为黑色或剪切一些文本。
-
我很抱歉我的英语不好。
答案 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时,列表框会返回逐渐减少的列表。