Как добавить подстановочный знак к выбранному в выпадающем списке значению, чтобы расширить значения, возвращаемые в форме нескольких элементов - PullRequest
0 голосов
/ 10 октября 2019

У меня есть многоэлементная форма, которая отображает записи клиента, например, имя и фамилию, дату рождения, адрес и т. Д.… Один и тот же клиент может быть указан несколько раз несколькими способами и может иметь то же или похожее имя, что и другиеклиенты (потому что плохой исторический процесс обработки данных). Джим Смит, Джеймс Смит и Джим Смит-младший могут быть одинаковыми или более чем тремя разными людьми (дата рождения и другая информация помогают решить такие проблемы).

Я настроил два поля со списком для последовательной фильтрации формы, но мне нужна помощь, чтобы они работали по своему усмотрению. Первая комбинация извлекает список различных фамилий из базовой таблицы с помощью простого запроса выбора. После выбора имени второе поле со списком предлагает набор отдельных имен с выбранной фамилией.

Есть ли способ использовать выбранную фамилию и символы подстановки в vba, чтобы при выборе «Смит» также возвращались «Смит младший», «Смит-Джонс» и «Смитерс»? Прямо сейчас у меня есть следующее, которое запрашивает второй комбинированный список и устанавливает начальный фильтр в форме, на данный момент только «Смит» в моем примере:

Private Sub cboFindLast_AfterUpdate()
    Me.cboFindFirst.Requery
    Me.cboFindFirst = Null
    Me.Filter = "LName = '" & Me.cboFindLast & "'"
    Me.FilterOn = True
End Sub    

Это работает как требуется, за исключением того, что не возвращает«Смит +» записи. В этот момент пользователь может выбрать из cboFindFirst, чтобы еще больше сократить список. Опять же, было бы неплохо, если бы при выборе «Энн» были возвращены Энн, Анна, Энни и даже Рут-Энн, если таковые возникнут. Код, который в настоящее время находится во втором блоке:

Private Sub cboFindFirst_AfterUpdate()
    Me.Filter = "FName = '" & Me.cboFindFirst & "' And LName = '" & Me.cboFindLast & "'"
    Me.FilterOn = True
End Sub

Опять же, это работает хорошо и сокращает список, например, до всех записей «Энн Смит», но, возможно, есть более поздняя «Энни Смит-Джонс»”После того, как она вышла замуж, и я хотел бы, чтобы эта запись также была показана.

1 Ответ

1 голос
/ 10 октября 2019

Конечно, используйте LIKE с подстановочным знаком:

Me.Filter = "LName LIKE '" & Me.cboFindLast & "*'"

Me.Filter = "FName LIKE '" & Me.cboFindFirst & "*' And LName LIKE '" & Me.cboFindLast & "*'"

...