Программа частичного текстового поиска для поля со списком, не работающего после первой записи - MS Access 2016 - PullRequest
0 голосов
/ 13 марта 2019

У меня есть подчиненная форма (дочерние записи), в которой будут перечислены области, к которым пользователь (родитель) может получить доступ.

В подчиненной форме есть возможность выбора множества областей доступа.

Так это может выглядеть следующим образом:

Склад 1 Офис 8 Гараж 3 Склад 11

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

Например, если я наберу «WARE», он найдет все записи, которые содержат этот частичный текст, и опустит выпадающее меню cboAccessArea, чтобы отобразить только 3 связанные записи.

Поэтому я выбираю одну из найденных записей - «Склад 1»

Код работает нормально, пока я не попытаюсь добавить 2-ю или 3-ю запись, после чего поле со списком простопадает, но источник строки перестает работать.Однако, если я перемещаю курсор, как будто рисую при выборе записей, я вижу, что он просто не перекрасил источник строки, потому что он показывает то, что я набрал.У комбинированных полей нет метода «Перекрасить».Я также попробовал запрос, но он говорит, что запись должна быть сохранена.Разве уход из ряда не означает спасение?

Private Sub cboAccessArea_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim strSQL As String

        strSQL = "SELECT * " _
               & "FROM tbl_AccessAreas " _
               & "WHERE AccessArea Like '*" & Me.cboAccessArea.Text & "*' OR [Segment] Like '*" & Me.cboAccessArea.Text & "*';"


    Debug.Print strSQL


        Select Case KeyCode

        Case 38, 40  'up and down should move up and down  - not search

            KeyCode = 0

        Case 27 'Escape key should prevent creating a record
            Me.Undo

        Case 1, 9, 13
            Exit Sub

        Case Else
            Me.cboAccessArea.RowSource = strSQL
            Me.cboAccessArea.Dropdown


        End Select
End Sub
...