Установка свойства ComboBox RowSource для запроса в методе «GotFocus ()» оставляет пустые значения в ComboBox Access VBA - PullRequest
0 голосов
/ 11 мая 2018

Я хочу заполнить свой ComboBox в форме доступа, используя VBA на основе данных из другой таблицы.Ранее, чтобы сделать это, я сделал следующее:

  • На вкладке «Свойства» -> «Данные» я заполнил поля «Источник строки» и «Тип источника строки» с этой информацией:

enter image description here

Теперь, когда бы я ни щелкнул по раскрывающемуся списку для моего комбинированного списка, он будет заполнять раскрывающийся список всеми именами из таблицы t_people.

Это ограничивало меня, однако, когда данные менялись в столбце имени t_people.Чтобы получить обновленный список, я должен закрыть форму и снова открыть ее, чтобы запрос снова запустился.Я ограничил доступ к этому файлу Access, так что пользователю предоставляется только x количество форм, и он не может закрывать / открывать их или другие.

Мое решение состоит в том, чтобы удалить запрос при загрузке формы, ивместо этого запускайте запрос каждый раз, когда поле со списком получает фокус, событие щелчка или что-то в этом роде.Я сделал это со следующим событием в VBA:

'Run when the "name" combobox gains focus
Private Sub nameCb_GotFocus()
    [nameCb].RowSource = "SELECT name FROM t_people"
End Sub

Я установил точки останова, и этот код работает.Однако после этого поле со списком не заполняется.Как я могу заставить комбинированный список заполняться значениями из запроса для каждого фокуса комбинированного списка?

1 Ответ

0 голосов
/ 11 мая 2018

Установите RowSource в дизайне и добавьте .Requery при входе в элемент управления.

Private Sub nameCb_Enter()
    nameCb.Requery
End Sub
...