Фильтрация подчиненной формы по текстовому полю с оператором Like (DAO и ADO)
Где:
Me!txtSearch = Текстовое поле с искомым текстом
Me!objSubForm.Form = ссылка на обьект - Подчиненная форма
"Вешаем" все это на событие AfterUpdate - поля с искомым текстом ...
Private Sub txtSearch_AfterUpdate() Dim val As Variant Dim strFilter As String On Error GoTo txtSearch_AfterUpdateErr val = Me!txtSearch If IsNull(val) = False Then
Me!objSubForm.Form.FilterOn = False
strFilter = "[Имя поля по которому ищем] Like '*" & val & "*'"
Me!objSubForm.Form.Filter = strFilter Me!objSubForm.Form.FilterOn = True Me!objSubForm.SetFocus Else Me!objSubForm.Form.Filter = "" Me!objSubForm.Form.FilterOn = False Me!objSubForm.SetFocus End If
txtSearch_AfterUpdateBye: Exit Sub
txtSearch_AfterUpdateErr: MsgBox "Error " & Err.Number & vbCrLf & Err.Description & vbCrLf & _ "in procedure txtSearch_AfterUpdate", vbCritical, "Error!" Resume txtSearch_AfterUpdateBye End Sub
Private Sub txtSearch_AfterUpdate() '-------------------------------------------------------------------------- Dim val As Variant, strFilter$ On Error GoTo txtSearch_AfterUpdate_Err val = Me!txtSearch With Me!objSubForm.Form If IsNull(val) = False Then strFilter = "part_code Like '*" & val & "*' OR part_name Like '*" & val & "*'" .Recordset.Filter = adFilterNone .Recordset.Filter = strFilter Else .Recordset.Filter = adFilterNone End If Set .Recordset = .Recordset End With
txtSearch_AfterUpdate_Bye: Exit Sub
txtSearch_AfterUpdate_Err: MsgBox "Ошибка " & Err.Number & vbCrLf & Err.Description & vbCrLf & "в процедуре: txtSearch_AfterUpdate", vbCritical, "Error" Resume txtSearch_AfterUpdate_Bye End Sub
|