Вот код, который я использую, чтобы выполнить то, что вы ищете.У меня есть окно поиска «Searchfor», где я печатаю, и «SearchResults» в виде комбинированного списка с данными.Также есть текстовое поле «SrchText», которое используется запросом «QRY_SearchAll».Этот запрос представляет собой серию «Like» »& [Forms]! [FRM_SearchMulti]! [SrchText] &""" для каждого поля, которое я хочу отобразить в поле со списком, см. Рисунок.
Private Sub SearchFor_Change()
'Create a string (text) variable
Dim vSearchString As String
'Populate the string variable with the text entered in the Text Box SearchFor
vSearchString = SearchFor.Text
'Pass the value contained in the string variable to the hidden text box SrchText,
'that is used as the sear4ch criteria for the Query QRY_SearchAll
SrchText = vSearchString
'Requery the List Box to show the latest results for the text entered in Text Box SearchFor
Me.SearchResults.Requery
'Tests for a trailing space and exits the sub routine at this point
'so as to preserve the trailing space, which would be lost if focus was shifted from Text Box SearchFor
If Len(Me.SrchText) <> 0 And InStr(Len(SrchText), SrchText, " ", vbTextCompare) Then
'Set the focus on the first item in the list box
Me.SearchResults = Me.SearchResults.ItemData(1)
Me.SearchResults.SetFocus
'Requery the form to refresh the content of any unbound text box that might be feeding off the record source of the List Box
DoCmd.Requery
'Returns the cursor to the the end of the text in Text Box SearchFor,
'and restores trailing space lost when focus is shifted to the list box
Me.SearchFor = vSearchString
Me.SearchFor.SetFocus
Me.SearchFor.SelStart = Me.SearchFor.SelLength
Exit Sub
End If
'Set the focus on the first item in the list box
Me.SearchResults = Me.SearchResults.ItemData(1)
Me.SearchResults.SetFocus
'Requery the form to refresh the content of any unbound text box that might be feeding off the record source of the List Box
DoCmd.Requery
'Returns the cursor to the the end of the text in Text Box SearchFor
Me.SearchFor.SetFocus
If Not IsNull(Len(Me.SearchFor)) Then
Me.SearchFor.SelStart = Len(Me.SearchFor)
End If
End Sub
Одно предупреждение об этой системе: вместо обновления используется запрос.Это хорошо для разумного количества записей в достаточно быстрой системе.Я обнаружил, что когда я пытаюсь использовать этот же код для данных на древнем сервере Sharepoint, я получаю задержку в 10 секунд после каждой вводимой буквы.Поэтому, если вы имеете дело с большим количеством записей или с медленным сервером, вы можете изменить «требуемый» на «обновить».