我正在尝试根据在子表单上的文本框中键入的内容来过滤子表单上显示的记录。子窗体称为用户,它位于组窗体上。在用户子窗体上有一个名为 txtFilter 的文本框。如果我在 txtFilter 中键入“W”,我只想显示用户的姓氏或用户名以“W”开头的记录。当我继续输入 W...A...LI 时,只希望显示 lastName 或 UserName 以“Wal”开头的用户。
我有一些模糊的想法,我必须使用记录集属性或子表单的 serverFilter 来执行此操作,但我真的不知道该怎么做。请帮我!
我正在尝试根据在子表单上的文本框中键入的内容来过滤子表单上显示的记录。子窗体称为用户,它位于组窗体上。在用户子窗体上有一个名为 txtFilter 的文本框。如果我在 txtFilter 中键入“W”,我只想显示用户的姓氏或用户名以“W”开头的记录。当我继续输入 W...A...LI 时,只希望显示 lastName 或 UserName 以“Wal”开头的用户。
我有一些模糊的想法,我必须使用记录集属性或子表单的 serverFilter 来执行此操作,但我真的不知道该怎么做。请帮我!
Private Sub txtFilter_Change()
If Nz(Me.txtFilter.Text, "") = "" Then
Me.FilterOn = False
Me.txtFilter.SetFocus
Exit Sub
End If
Me.Filter = "lastName like '" + Me.txtFilter.Text + "%' or userName like '" & _
Me.txtFilter.Text + "%'"
Me.FilterOn = True
Me.txtFilter.SetFocus
Me.txtFilter.SelStart = Len(Nz(Me.txtFilter.Text, "")) + 1
End Sub
对 Access 2013 的 @dmr 响应的快速更新:
修改后的回应:
Private Sub txtFilter_Change()
Dim search_text As String
search_text = Me.txtFilter
If Nz(Me.txtFilter.Text, "") = "" Then
Me.FilterOn = False
Me.txtFilter.SetFocus
Exit Sub
End If
Me.Filter = "lastName like '*" + Me.txtFilter.Text + "*' or userName like '*" & _
Me.txtFilter.Text + "*'"
Me.FilterOn = True
Me.txtFilter.SetFocus
Me.txtFilter.Value = search_text
Me.txtFilter.SelStart = Len(Nz(Me.txtFilter.Text, "")) + 1
End Sub