Заполните многостолбцовый комбинированный список двумерным массивом в Access - PullRequest
0 голосов
/ 06 мая 2020

Я пробовал следовать этому методу:

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String
Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"
Films(2, 1) = "Speed"
Films(3, 1) = "Star Wars"
Films(4, 1) = "The Godfather"
Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"
Films(2, 2) = "Action"
Films(3, 2) = "Sci-Fi"
Films(4, 2) = "Crime"
Films(5, 2) = "Drama"

ComboBox1.List = Films

source

Но свойство .List делает не работает в Access. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 07 мая 2020

Как сказано 7 июня, используйте метод ComboBox.AddItem () в al oop. Для ваших целей ComboBox не должен быть привязан к источнику данных: его свойство Тип источника строки должно иметь значение «Список значений». Чтобы добавить строку с несколькими столбцами в строку ComboBox, используйте точку с запятой для разделения столбцов. Например:

ComboBox1.AddItem (Films(1, 1) & ";" & Films(1, 2))

или

Dim rowStr As String
rowStr = Films(1, 1) & ";" & Films(1, 2)
ComboBox1.AddItem (rowStr)

AddItem () автоматически добавляет строку в конец списка ComboBox, если вы не укажете параметр индекса строки. Дополнительные сведения см. В разделе ComboBox.AddItem метод в Центре разработки Office.

Снимок экрана: Демонстрационное изображение VBA

2 голосов
/ 07 мая 2020

«Форма» в Access - это не тот же тип элемента / объекта, что и «UserForm» в Excel, где ваша «исходная» ссылка указывает на (https://www.excel-easy.com/vba/examples/multicolumn-combo-box.html).

В Access было бы неплохо получить информацию в поле со списком (или в поле со списком) из таблицы или запроса. Вы, конечно, можете закодировать его с помощью VBA, но тогда вы можете обнаружить, что добавляете / редактируете много дыр VBA здесь и там, поскольку в Access все идет более естественно, используя SQL и механизм базы данных.

Это более крупный список c, но в основном у вас, вероятно, должны быть разные таблицы для «Фильмов» и для «Категории»

Таблица1:

enter image description here

Таблица2:

enter image description here

Затем вы должны определить отношения, поскольку, скорее всего, в вашей базе данных есть другое количество фильмов, чем есть категории. Говоря, что мы хотели бы избежать ситуации, когда вам придется добавить еще один mov ie, скажем "D ie hard" в ваш список mov ie. Это, вероятно, попадет в категорию «Действие». В базе данных мы не хотим повторяться. Просто по идентификатору мы будем ссылаться на categoryID по его значению.

enter image description here

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

enter image description here

После этого вы можете определить источник для комбо, например, с помощью мастера:

enter image description here

enter image description here

enter image description here

Итак таким образом вы можете поддерживать каждый из списков отдельно в своих таблицах.

Вот созданный запрос:

enter image description here

  • На вкладке «Данные» вы можете решить, какой связанный столбец использовать относительно источника данных.
  • На вкладке «Формат» вы можете настроить ширину столбцов в поле со списком. Используйте длину 0, чтобы скрыть столбец.

Таким образом, код VBA не требуется.

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

Надеюсь, это поможет.

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