Объект ListBox (Доступ)
Этот объект соответствует контролю полей списка. В окне списка отображается список значений или альтернатив.
Заметки
| Средство контроля | Средство |
|---|---|
![]() | ![]() |
Во многих случаях проще и быстрее выбрать значение из списка, чем запомнить значение для введите. Список вариантов также помогает убедиться в правильности значения, введенного в поле.
Список в поле списка состоит из строк данных. Строки могут иметь один или несколько столбцов, которые могут отображаться с заголовками или без них, как показано на следующей схеме.
Если поле списка с несколькими столбцами связано, Microsoft Access сохраняет значения из одного из столбцов.
Для хранения значения, которое можно использовать с помощью другого управления, можно использовать неограниченое поле списка. Например, для ограничения значений в другом поле списка или в настраиваемом диалоговом окне можно использовать неограничаемый список. Кроме того, для поиска записи можно использовать неограничений список, основываясь на значении, выбранном в поле списка.
Если в форме нет места для отображения списка или если вы хотите иметь возможность ввести новые значения, а также выбрать значения из списка, используйте поле комбо, а не поле списка.
Пример
В этом примере показано, как фильтровать содержимое списка во время ввода в текстовом окне.
В этом примере поле списка с именем ColorID отображает список цветов, хранимый в таблице Цвета. При введите текстовое поле FilterBy элементы ColorID фильтруются динамически.
Для этого используйте событие Изменение текстового окна для создания SQL, которое будет служить в качестве нового rowSource в поле списка.
События
Методы
Свойства
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Добавление значения в привязанное поле со списком
Поля со списками обычно используются для отображения списка значений в таблице или запросе. Отвечая на событие NotInList, можно предоставить пользователю способ для добавления значений, которых нет в списке.
Часто значение, отображаемое в поле со списком, подставляется из записи в связанной таблице. Так как список создается из таблицы или запроса, необходимо предоставить пользователю способ ввода новой записи в базовой таблице. Затем можно использовать метод Requery, чтобы повторно запросить список, содержащий новое значение.
При вводе в поле со списком значения, которого нет в списке, возникает событие NotInList поля со списком, если свойству LimitToList поля со списком присвоено значение Да или столбец, кроме привязанного столбца поля со списком, отображается в поле. Можно создать процедуру обработки события NotInList, позволяющую пользователю добавлять новую запись в таблицу, из которой берутся значения списка. Процедура обработки события NotInList включает строковый аргумент NewData, который Access использует для передачи введенного пользователем текста процедуре обработки событий.
В процедуре обработки события NotInList также есть аргумент Response, с помощью которого можно сообщить Access необходимые действия после запуска процедуры. В зависимости от используемых действий в процедуре обработки событий, нужно присвоить аргументу Response одно из трех заранее определенных значений констант:
| Константа | Описание |
|---|---|
| acDataErrAdded | Если процедура обработки событий вводит новое значение в источнике записей для списка или позволяет это делать пользователю, присвойте аргументу Response значение acDataErrAdded. После этого Access повторно запрашивает поле со списком, добавляя новое значение в список. |
| acDataErrDisplay | Если новое значение не добавляется и требуется, чтобы в Access отобразилось стандартное сообщение об ошибке, присвойте аргументу Response значение acDataErrDisplay. В Access требуется ввод пользователем допустимого значения из списка. |
| acDataErrContinue | Если отображается собственное сообщение в процедуре обработке событий, присвойте аргументу Response значение acDataErrContinue. В Access не отображается стандартное сообщение об ошибке, но по-прежнему требуется, чтобы пользователь ввел значение в поле. Если не нужно, чтобы пользователь выбирал существующее значение из списка, можно отменить изменения поля с помощью метода Undo. |
Например, в приведенной ниже процедуре обработки событий у пользователя спрашивается, следует ли добавить значение в список, добавляется значение и используется аргумент Response, чтобы сообщить Access о необходимости повторно запросить список.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Выпадающий список на форме Access 2003
Продолжаем осваивать Access, и сегодня мне бы хотелось поделиться с Вами одной маленькой, но иногда очень полезной хитрости при проектировании формы Access. А точнее данная хитрость касается выпадающего списка, поэтому сейчас мы займемся основами создания выпадающих списков на форме Access 2003.
Совсем недавно мы с Вами рассматривали небольшую хитрость (на самом деле просто возможности) в отчете Access, а конкретней как сгруппировать данные, а сегодня мы продолжим, но уже с выпадающим списком на форме. И начнем мы как обычно с небольшой теории.
Что такое выпадающий список в Access 2003
Если говорить точнее, то в access данный элемент управления называется «Поле со списком». И он необходим, для того чтобы пользователь мог, не набирая на клавиатуре все значение целиком, выбрать его простым кликом мышки. Здесь имеется в виду, что эти значения будут распространенные, т.е. эти значения будут вводить достаточно часто и чтобы упростить и ускорить ввод этих данных и придумали выпадающий список. И если под итожить, то
Поле со списком – это набор значений (список), которые могут отобразиться на экране, для выбора, путем клика мышки по данном элементу управления, т.е. выпадающему списку.
Как создать выпадающий список
Для этого необходимо сначала создать форму, если она у Вас уже есть то это даже лучше, но для начинающих я повторюсь.
Открываем Access в режиме конструктора, выбираем «Формы» на окне объекты, и жмем создать
Затем нам предложат выбрать источник данных, но нам этого не нужно мы просто жмем «ОК»
Затем на панели элементов выбираем элемент «Поле со списком» и перетащим его на нашу форму, и сразу же в это время запустится мастер создания полей со списком. На первом шаге нам предложат, выбрать способ получения данных, и для начала мы выберем «Фиксированный набор значений», в дальнейшем мы разберем, как можно использовать получения данных на основе запроса или таблицы. А пока жмем далее:
Затем необходимо ввести набор значений, которые будет содержать наш список. И здесь мне бы хотелось бы рассказать, что очень часто мы используем два столбца, т.е. в первом храним идентификатор, а во втором само значение. Другим словами, чтобы не записывать в базу все значение целиком, мы записываем только идентификатор (например, для оптимизации размера базы данных). Поэтому мы укажем 2 столбца, и заполним их следующим образом:
После того как Вы нажмете далее, Вы попадете на окно, в котором можно будет указать, какое поле (столбец) будет записываться в базу данных. Здесь подразумевается, что если бы мы указали источник данных у нашей формы, то мы бы могли задать соответствующее поле, в которое записывалось выбранное значение из выпадающего списка, а так как в выбранном значении у нас хранится как бы два значения (два же столбца) здесь мы как раз указываем какое именно должно записывать в базу, как мы уже определились ранее, будим записывать идентификатор, т.е. первый столбец.
Вот в принципе и все, единственное на следующем шаге мы можем задать подпись нашего выпадающего списка и жмем «Готово»
В итоге у нас на форме будет отображено следующее
Надпись «Свободный» означает, что данному выпадающему списку не заданно не одно поле из источника данных, поэтому все, что мы выберем, никуда не запишется.
Теперь сохраняем форму, и запускам ее:
Мы видим, что при нажатии на выпадающий список, он раскрывается, и появляются значения, в виде двух столбцов как мы и указывали. И если мы выберем одно значение, то оно заполнится в поле, причем значение будет отображаться то, которое должно быть записано в это поле.
И вот тут начинаем прибегать к хитрости, о которой я упоминал в начале статьи. Она заключается в следующем, когда мы нажимали на выпадающий список, у нас отображались два столбца, но согласитесь, зачем обычным пользователям видеть идентификаторы этих значений, и после того, когда мы выбрали значение, лучше чтобы отображалось описание этого значения, а не сам идентификатор, поэтому мы делаем вот что, мы просто делаем невидимым первый столбец с идентификатором. Это делается в свойствах «поля со списком» ширина столбцов. И первому столбу мы задаем значение 0см.
И теперь у нас все будет выглядеть как надо
Отображается второй столбец, а записывается в базу первый, т.е. идентификатор.
Ну и теперь вкратце, как и обещал, покажу, как задать список значений на основе запроса к базе данных. Не используя при этом ввод значений, так как все наши значения будут храниться в базе. Для этого давайте определимся с источником, пусть это будет таблица test_table, вот с таким данными, простой запрос select:
И теперь чтобы переделать наше поле со списком заходим в его свойства, переходим на вкладку «Данные» и меняем там «Тип источника строк» на «Таблица, представление, процедура» и «Источник строк» на запрос скажем вот такой
От себя я добавил условие where priz = 0 просто так чтобы Вы понимали, что эта таблица может использоваться для разных полей со списком.
Больше ничего не меняем, просто сохраняем и запускаем нашу форму
И теперь наш выпадающий список берет значения не из простого списка, а из базы данных.
С выпадающими списками Вы теперь знакомы, и знаете даже небольшие хитрости, которые помогут Вам в реализации Ваших задач. Удачи!
Создание или удаление поля списка значений
Используйте поле списка значений, если имеется ограниченный набор значений, которые изменяются не часто, например шкалы оценок или категории расходов.
Примечание. В Access существуют другие типы полей списков: поле подстановки, которое ищет соответствующие данные в таблице (например, поле идентификатора, которое ищет полное имя), и многозначное поле, в котором может храниться до 100 значений, разделенных запятой (,). За дополнительной информацией обращайтесь к статьям Создание и удаление поля подстановки и Создание и удаление многозначного поля.
В этой статье
Создание поля списка значений
Откройте таблицу в режиме Конструктор.
Щелкните в столбце Тип данных ячейку, соответствующую столбцу, который будет задан как поле подстановки, щелкните стрелку вниз и выберите пункт Мастер подстановок.
Примечание. Мастер подстановок в зависимости от выбранных в нем настроек создает списки трех типов: поле подстановки, поле списка значений и многозначное поле.
Внимательно следуйте указаниям мастера.
На первой странице выберите вариант Будет введен фиксированный набор значений и нажмите кнопку Далее.
На второй странице оставьте первый столбец выбранным, введите несколько значений (по одному значению на каждую строку под заголовком столбца), а затем нажмите кнопку Далее.
На третьей странице на вопрос Ограничить записи вариантами из списка? выберите вариант ответа Ограничиться списком, а затем нажмите кнопку Готово.
Обновление свойств поля списка значений
При создании поля списка значений с помощью мастера подстановок свойства подстановки для этого поля задаются автоматически. Чтобы изменить структуру поля списка значений, задайте его свойства Подстановка.
Откройте таблицу в Конструкторе.
Щелкните имя поля подстановки в столбце Имя поля.
В разделе Свойства поля откройте вкладку Подстановка.
Задайте свойству Тип элемента управления значение Поле со списком, чтобы видеть все доступные изменения свойств, отражающие ваш выбор. За дополнительной информацией обращайтесь к статье Свойства поля подстановки.
Редактировать список значений можно непосредственно в свойстве Источник строк.
Удаление поля списка значений
Важно! При удалении поля списка значений, в котором содержатся данные, эти данные теряются без возможности восстановления, отменить это действие нельзя. Поэтому перед удалением каких-либо полей или других компонентов базы данных создавайте резервную копию базы данных.
Удаление из режима таблицы
Откройте таблицу в режиме Режим таблицы.
Найдите поле списка значений, щелкните правой кнопкой мыши строку заголовка и выберите команду Удалить поле.
Нажмите кнопку Да, чтобы подтвердить удаление.
Удаление из конструктора
Откройте таблицу в режиме Конструктор.
Щелкните область выделения строки рядом с полем списка значений, а затем нажмите клавишу DELETE, либо щелкните правой кнопкой мыши область выделения строки и выберите команду Удалить строки.
Нажмите кнопку Да, чтобы подтвердить удаление.
Свойства поля подстановки
Тип элемента управления
Укажите это свойство, чтобы задать отображаемые свойства:
Поле со списком содержит список всех доступных свойств.
Список содержит список всех доступных свойств кроме свойств Число строк списка, Ширина списка и Ограничиться списком.
Текстовое поле не отображает свойства и преобразует поле в поле, доступное только для чтения.
Тип источника строк
Определяет, откуда брать значения для поля подстановки: из другой таблицы или запроса либо из списка указанных вами значений. В качестве источника вы также можете выбрать имена полей таблицы или запроса.
Указывает таблицу, запрос или список значений, из которых извлекаются значения для поля подстановки. Если свойство Тип источника строк имеет значение Таблица или запрос или Список полей, в этом свойстве должно быть указано имя таблицы или запроса либо инструкция SQL, представляющая запрос. Если свойство Тип источника строк имеет значение Список значений, это свойство должно содержать список значений, разделенных точками с запятой.
Указывает столбец в источнике строк, в котором содержится значение, хранящееся в столбце подстановок. Может принимать любое значение в диапазоне между 1 и числом столбцов в источнике строк.
Столбец, из которого извлекается значение, может отличаться от отображаемого столбца.
Определяет число столбцов в источнике строк, которые можно отобразить в поле подстановки. Чтобы выбрать столбцы для отображения, нужно задать ширину столбцов в свойстве Ширина столбцов.
Определяет, нужно ли отображать заголовки столбцов.
Задает ширину каждого столбца. Отображаемое значение в поле подстановки — это один или несколько столбцов, для которых в свойстве Ширина столбцов указано значение, отличное от нуля.
Если столбец не нужно отображать, например столбец «Код», укажите значение «0» для его ширины.
Число строк списка
Определяет количество строк, отображаемых в поле подстановки.
Определяет ширину элемента управления, появляющегося при отображении поля подстановки.
Определяет возможность ввода значения, отсутствующего в списке.
Разрешить несколько значений
Определяет возможность выбора нескольких значений в поле подстановки.
Нельзя изменить значение этого свойства с «Да» на «Нет».
Разрешить изменение списка значений
Определяет возможность редактирования элементов поля подстановки, основанного на списке значений. Если это свойство имеет значение Да, при щелчке правой кнопкой мыши поля подстановки, основанного на списке значений из одного столбца, в меню появится команда Изменение элементов списка. Если поле подстановки содержит несколько столбцов, это свойство игнорируется.
Форма изменения элементов списка
Указывает существующую форму, используемую для изменения элементов списка в поле подстановки, основанном на таблице или запросе.
Только значения источника строк
Показывает только значения, соответствующие текущему источнику строк, если свойство Разрешить несколько значений имеет значение Да.
Добавление записи в поле со списком средствами VBA
ругается на несоответствие типов данных, указывает на ctl, подскажите в чем проблема?
заранее всем спасибо!

Добрый день! Подскажите пожалуйста, можно ли развернуть поле со списком, используя vba. Т.е. так.
Добавление записи в таблицу через поле со списком
Добрый день, возможно ли добавить данные в таблицу через поле со списком? Имею само поле со.
Поле со списком и VBA
Всем привет! Появилась задача создать список и в зависимости от выбранного элемента этого списка.
Отфильтровать поле со списком на VBA
Вот база данных: В форме «Кл/Добавление: Партия» хочу сделать фильтрацию поля Исполнитель. Там.
дело в том что в другой БД, такая функция отлично работает!
а как можно объявить эту переменную как комбобокс?
Добавлено через 1 минуту
boby104, все разобрался
в функцию вы передаете не значения а объект
возможно
dim ctl as Object поможет ( но тут я не силен, боюсь повести по ложному пути)
или dim ctl as Библиотека.Комбобокс
Добавлено через 1 минуту
мой ответ запоздал))) но хорошо что получилось
Решение
это и с более простыми данными не всегда проходит
Помощь в написании контрольных, курсовых и дипломных работ здесь.

Проблема вот в чем, в базе данных у меня не получается сделать поле в котором, после выбора.
Поле со списком. VBA в MS Access 2003
Здравствуйте! Я создал форму..на ней одна кнопка и 4 поля со списком выбора телевизора. Когда.
Запрос на добавление средствами VBA
Здравствуйте, уважаемые форумчане! Такая проблема: необходимо создать запрос на добавление записи.
Добавление нового значения в поле со списком
Простейший случай! Есть две таблицы, одна «заказы», в которой через подстановку выбираются значения.
















