过滤子表单,开始于,多个条件

时间:2015-08-19 14:07:24

标签: vba ms-access access-vba

我想根据放入文本框的数据过滤子表单。 如果Student ID被完美输入,下面的代码将显示记录。 我想让我的过滤器显示Student IDFirst NameLast NameMe.Sort.Text

开头的所有记录
Private Sub Sort_Change()
If IsNull(Me.Sort.Text) Or Me.Sort.Text = "" Then
    Me.Students_subform.Form.FilterOn = False
Else
    Me.Students_subform.Form.FilterOn = True
    Me.Students_subform.Form.Filter = "[Student ID] ='" & Me.Sort.Text & "'"
End If
End Sub

1 个答案:

答案 0 :(得分:1)

听起来我觉得你需要一个包含3个Like条件的过滤器表达式OR' d。

例如,如果Me.Sort.Text包含文本" foo" ,请构建一个过滤器表达式字符串,例如......

 "[Student ID] Like 'foo*' OR [First Name] Like 'foo*' OR [Last Name] Like 'foo*'"

我在Access 2010中测试了此代码,并按照我认为您想要的方式过滤子窗体...

Private Sub Sort_Change()
    Dim strFilter As String

    With Me.Sort
        If Len(.Text & vbNullString) > 0 Then
            strFilter = "[Student ID] Like '" & .Text & _
                "*' OR [First Name] Like '" & .Text & _
                "*' OR [Last Name] Like '" & .Text & "*'"
        End If
    End With
    Debug.Print "strFilter: " & strFilter '<- inspect this in Immediate window
                                          ' Ctrl+g will take you there
    With Me.Students_subform.Form
        If Len(strFilter) = 0 Then
            .FilterOn = False
        Else
            .Filter = strFilter
            .FilterOn = True
        End If
    End With
End Sub