2015-08-19 2 views
3

Я хотел бы отфильтровать подформу на основе данных, помещенных в текстовое поле. Приведенный ниже код покажет запись, если набрано Student ID. Я хочу, чтобы мой фильтр показать все записи, в которых Student ID, First Name или Last Name начинается с Me.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 
+0

так что если 'Me.Sort.Text' содержит текст * "Foo" *, вы хотите построить строку выражение фильтра, такие как' "[Student ID] Как«Foo * 'ИЛИ [Имя] Lik e 'foo *' OR [Фамилия] Как «foo *» «Я правильно понял? – HansUp

+0

Я думаю, что это правильно – robosheep

ответ

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 
+0

Это прекрасно работает. Спасибо огромное! – robosheep

+0

Хорошо, я подумал, что это то, что вам нужно. Один момент, который меня немного беспокоит, заключается в том, что вы измените подформа '.Filter' с каждым нажатием клавиши в текстовом поле * Sort *. Если это окажется слишком большой нагрузкой на механизм базы данных, рассмотрите возможность использования текстового окна After Update (вместо события Change) для применения '.Filter' – HansUp

+0

. Это хорошая идея. Я переключусь на это, если у меня возникнут проблемы. – robosheep

Смежные вопросы