Поиск записей в таблице MS Access с помощью VBA On Change - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь адаптировать код, размещенный в Интернете https://www.microsoft.com/en-us/microsoft-365/blog/2012/05/03/using-a-combo-box-to-search-as-you-type/

Идея состоит в том, чтобы находить записи в форме MS Access путем поиска Фамилии человека.

Мой VBAвыглядит следующим образом, но я получаю сообщение об ошибке компиляции: синтаксическая ошибка

Private Sub cboLastNameFind_Change()
' If the combo box is cleared, clear the form filter.
If Nz(Me.cboLastNameFind.Text) = "" Then
 Me.Form.Filter = ""
 Me.FilterOn = False

' If a combo box item is selected, filter for an exact match.
' Use the ListIndex property to check if the value is an item in the list.
ElseIf Me.cboLastNameFind.ListIndex <> -1 Then
Me.Form.Filter = "[LastName] = '" &
Replace(Me.cboLastNameFind.Text, "'", """) & "‘"
Me.FilterOn = True

' If a partial value is typed, filter for a partial company name match.
Else
    Me.Form.Filter = "[LastName] Like '*" & _
                 Replace(Me.cboLastNameFind.Text, "'", """) & "*‘"
Me.FilterOn = True

End If

' Move the cursor to the end of the combo box.
Me.cboLastNameFind.SetFocus
Me.cboLastNameFind.SelStart = Len(Me.cboLastNameFind.Text)
End Sub

Кажется, проблема в Me.Form.Filter = "[LastName] = '" & (по крайней мере, это то, чтовыделяется сообщением об ошибке. Любые мысли и исправления приветствуются.

Спасибо, Саймон

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Не уверен, если вы знаете;поиск записей в форме MS Access путем поиска фамилии человека является стандартной функцией элемента управления Combobox.Когда вы перетаскиваете ее в форму, всплывающее окно мастера предлагает вам варианты поиска, один из которых - найти запись для формы из ее источника связанной записи.

0 голосов
/ 22 января 2019

Очевидно, что указанная вами страница содержит множество ошибок, вызванных текстовым процессором (ПРАВИЛЬНАЯ ОДИНОЧНАЯ ЦИТАЛА или ЛЕВАЯ ОДНОКВАЦИОННАЯ ЦИТАТА, где нужно использовать апостроф, и двойная кавычка, где должно быть две одинарные кавычки).

Никогда не следует копировать и вставлять код в текстовый процессор, такой как Word, и обратно. Видимо, Microsoft сделала эту ошибку.

Исправленный код выглядит следующим образом:

Private Sub cboLastNameFind_Change()
' If the combo box is cleared, clear the form filter.
If Nz(Me.cboLastNameFind.Text) = "" Then
 Me.Form.Filter = ""
 Me.FilterOn = False

' If a combo box item is selected, filter for an exact match.
' Use the ListIndex property to check if the value is an item in the list.
ElseIf Me.cboLastNameFind.ListIndex <> -1 Then
Me.Form.Filter = "[LastName] = '" &
Replace(Me.cboLastNameFind.Text, "'", "''") & "'"
Me.FilterOn = True

' If a partial value is typed, filter for a partial company name match.
Else
    Me.Form.Filter = "[LastName] Like '*" & _
                 Replace(Me.cboLastNameFind.Text, "'", "''") & "*'"
Me.FilterOn = True

End If

' Move the cursor to the end of the combo box.
Me.cboLastNameFind.SetFocus
Me.cboLastNameFind.SelStart = Len(Me.cboLastNameFind.Text)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...