Мульти-выбор данных поля поиска для VBA - PullRequest
0 голосов
/ 04 мая 2018

В конечном счете, я хочу сделать целую кучу флажков включенными, разблокированными, отключенными и заблокированными в зависимости от того, какие значения проверены в множественном выборе, и сколько их разрешено. Чтобы сделать это, сначала мне нужно знать, как получить данные в этих многократных поисках через vba. Я представляю.

Я пытался установить переменную в vba в значение одного из этих полей, но единственный тип данных, который он принимает, это variant - и даже тогда я не могу получить немедленное окно, чтобы сказать мне что я собрал в эту переменную.

Мне нужно, чтобы vba работал, если определенная метка является одной из перечисленных в поле множественного выбора.


Теперь для дальнейшего объяснения / контекста, реальные примеры: допустим, вы можете выбрать цвета для книги, основываясь на том, какого автора и жанра книга «владеет». У каждого автора и жанра есть различное количество цветов, которые вы можете выбрать, и ограниченный диапазон.

Допустим, книга написана Бобом, которому разрешено 2 из красного, синего, оранжевого и желтого, и это фантастическая книга, которая может быть 3 из красного, белого, серого, черного и фиолетового.

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

  • Пользователь выбирает красный - без изменений, за исключением того, что выбрано это поле.
  • Пользователь также выбирает синий цвет - без изменений, за исключением того, что выбран, потому что в то время как 2 (максимально допустимые) цвета боба выбранный, красный также в списке фантазий, который по-прежнему имеет 2 остальной. Перекрытие экономит больше.
  • Пользователь отменяет выбор красного и выбирает желтый - красный по-прежнему доступен (фантазия), но оранжевый теперь отключен и заблокирован.
  • Пользователь выбирает красный, белый и фиолетовый - серый и черный отключены и заблокирован, так как все опции уже исчерпаны.

Теперь, если вы хотите рассказать обо всем, как это будет работать, это просто фантастика, но на данный момент я действительно спрашиваю, как получить данные в этих полях с несколькими вариантами выбора. Остальное для контекста и т. Д.

1 Ответ

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

Свойство .Value поля множественного выбора, набора записей или элемента управления, определяется как вариантный массив в Access. Это означает, что вам нужно использовать функции массива для получения значения.

Вы можете прочитать значение следующим образом:

rs.Fields("MyMultiValuedField").Value(0) 'First value
Join(rs.Fields("MyMultiValuedField").Value, ", ") 'Concatenated values

И установите значение следующим образом:

rs.Fields("MyMultiValuedField").Value = Array("Value1", "Value2")

Обратите внимание, что в поле поиска хранятся ключи, а не искомые значения. И по моему опыту, при назначении с использованием VBA MVF имеют минимальную валидацию, вы даже можете вставить значения неправильного типа, что приведет к мусору.

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