Как заполнить ComboBox результатами запроса - PullRequest
1 голос
/ 19 июня 2019

У меня была проблема с заполнением ComboBox из результатов запроса в Access VBA. Моя цель состояла в том, чтобы запросить один столбец таблицы и использовать каждую запись из результата в качестве опции для выпадающего списка.

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

Dim RS As DAO.Recordset
Dim SQL As String

'Clean-up. not sure if it's needed but I'm "clearing" the old data (if there's any) before putting the new in
combox.RowSourceType = "Table/Query"
combox.RowSource = ""

SQL = "SELECT [some_value] FROM [a_table] WHERE [another_value] = '" & argv(0) & "'"

combox.RowSource = SQL

Это было частью другого вопроса Я задавал, но для более ясной структуры я перемещаю этот вопрос (и его ответ) в эту ветку.

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Ваша первая попытка в порядке, вам просто нужно запросить поле со списком для фактической загрузки результатов запроса.

Dim SQL As String
combox.RowSourceType = "Table/Query"
combox.RowSource = ""

SQL = "SELECT [some_value] FROM [a_table] WHERE [another_value] = '" & argv(0) & "'"

combox.RowSource = SQL
combox.requery 'Clears old data, loads new data
0 голосов
/ 19 июня 2019

После некоторого рефакторинга и исправления я пришел к такому результату, который заставляет ComboBox вести себя так, как я намереваюсь:

combox.RowSourceType = "Value List"
combox.RowSource = ""


SQL = "SELECT [some_value] FROM [a_table] WHERE [another_value] = '" & argv(0) & "'"
With combox
    .RowSource = kombSQL
    .ColumnCount = 2
    .ColumnWidth = 1
    .ColumnWidths = "1.5in."
End With

Set RS = CurrentDb.OpenRecordset(SQL)
RS.MoveLast
RS.MoveFirst
combox.RemoveItem 0

Do Until RS.EOF
    Me.combox.AddItem RS.Fields("some_value")
    RS.MoveNext
Loop

RS.Close
Set RS = Nothing

Me.combox.BoundColumn = 0
Me.combox.ListIndex = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...