Выпадающий список на форме Access 2003

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

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

Что такое выпадающий список в Access 2003

Если говорить точнее, то в access данный элемент управления называется «Поле со списком». И он необходим, для того чтобы пользователь мог, не набирая на клавиатуре все значение целиком, выбрать его простым кликом мышки. Здесь имеется в виду, что эти значения будут распространенные, т.е. эти значения будут вводить достаточно часто и чтобы упростить и ускорить ввод этих данных и придумали выпадающий список. И если под итожить, то

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

Как создать выпадающий список

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

Открываем Access в режиме конструктора, выбираем «Формы» на окне объекты, и жмем создать

Скриншот 1

Затем нам предложат выбрать источник данных, но нам этого не нужно мы просто жмем «ОК»

Скриншот 2

Затем на панели элементов выбираем элемент «Поле со списком» и перетащим его на нашу форму, и сразу же в это время запустится мастер создания полей со списком. На первом шаге нам предложат, выбрать способ получения данных, и для начала мы выберем «Фиксированный набор значений», в дальнейшем мы разберем, как можно использовать получения данных на основе запроса или таблицы. А пока жмем далее:

Скриншот 3

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

Скриншот 4

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

Скриншот 5

Вот в принципе и все, единственное на следующем шаге мы можем задать подпись нашего выпадающего списка и жмем «Готово»

Скриншот 6

В итоге у нас на форме будет отображено следующее

Скриншот 7

Надпись «Свободный» означает, что данному выпадающему списку не заданно не одно поле из источника данных, поэтому все, что мы выберем, никуда не запишется.

Теперь сохраняем форму, и запускам ее:

Скриншот 8

Мы видим, что при нажатии на выпадающий список, он раскрывается, и появляются значения, в виде двух столбцов как мы и указывали. И если мы выберем одно значение, то оно заполнится в поле, причем значение будет отображаться то, которое должно быть записано в это поле.

Скриншот 9

И вот тут начинаем прибегать к хитрости, о которой я упоминал в начале статьи. Она заключается в следующем, когда мы нажимали на выпадающий список, у нас отображались два столбца, но согласитесь, зачем обычным пользователям видеть  идентификаторы этих значений, и после того, когда мы выбрали значение, лучше чтобы отображалось описание этого значения, а не сам идентификатор, поэтому мы делаем вот что, мы просто делаем невидимым первый столбец с идентификатором. Это делается в свойствах «поля со списком» ширина столбцов. И первому столбу мы задаем значение 0см.

Скриншот 10

И теперь у нас все будет выглядеть как надо

Скриншот 11

Отображается второй столбец, а записывается в базу первый, т.е. идентификатор.

Ну и теперь вкратце, как и обещал, покажу, как задать список значений на основе запроса к базе данных. Не используя при этом ввод значений, так как все наши значения будут храниться в базе. Для этого давайте определимся с источником, пусть это будет таблица test_table, вот с таким данными, простой запрос select:

Скриншот 12

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

     select id, name from test_table where priz = 0

От себя я добавил условие where priz = 0 просто так чтобы Вы понимали, что эта таблица может использоваться для разных полей со списком.

Скриншот 13

Больше ничего не меняем, просто сохраняем и запускаем нашу форму

Скриншот 14

И теперь наш выпадающий список берет значения не из простого списка, а из базы данных.

С выпадающими списками Вы теперь знакомы, и знаете даже небольшие хитрости, которые помогут Вам в реализации Ваших задач. Удачи!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 2
  1. Расул

    здравствуйте. Не подскажете как создать выпадающий список зависящий от значения выбранного из другого выпадающего списка? например: из первого выпадающего списка (ПК,Принтер) выбираем ПК, а во втором выходит выбор ОЗУ, Винт, DVD итд. А если выбрать Принтер из первого то чтоб во втором выбиралось Картридж, Бумага… Если можно по подробнее. Заранее благодарю!

  2. Админ (автор)

    Привет!
    Используй событие «После обновления» т.е. как в первом выпадающем списке выберешь значение, во втором программно на VBA изменяешь источник строк, используя при этом RowSource. Например:
    Есть два поля со списком, первый это в твоем случае ПК, Принтер, у них соответственно должны быть идентификаторы, второй это ОЗУ, Винт, DVD, Картридж, Бумага по умолчанию можно выбрать все, а можно вообще сделать без источника. Затем в первое поле со списком в обработчик события «После обновления» вставляешь например, вот такой код:

    Me.Поле_со_списком _2.RowSource = «select id, text from table2 where tip =» & Me.Поле_со_списком _1.Column(0)

    Где,
    Поле_со_списком _2 – это имя выпадающего списка ОЗУ, Винт, DVD, Картридж, Бумага;
    table2 – таблица в которой хранятся эти данные (ОЗУ, Винт, DVD, Картридж, Бумага);
    tip – соответственно идентификатор (ПК, Принтер);
    Поле_со_списком _1.Column(0) – это выбранное значение ПК, Принтер.

    Весь смысл сводится к установке источника строк (RowSource) поля со списком в процессе срабатывания события «После обновления».
    Надеюсь подробно объяснил

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.