Для реализации некоторых тонких моментов в Microsoft Access может быть очень полезен (а иногда и просто необходим) встроенный язык программирования Visual Basic for Applications (VBA). В этой хаутошке рассказано, как использовать VBA для решения одной простой с виду задачи — блокирования текстового поля при выборе в списке определённого значения.
Прикреплённый файл: vba_0001.mdb
На первый взгляд может показаться, что реализовать подобное очень просто. Однако на деле всё оказывается сложнее. Сделать подобное без применения программирования наверное и невозможно. И хотя сам код такой программы представляет из себя три строчки, его применение может вызвать определённые трудности.
Мы рассмотрим как реализовать подобное на примере русской версии Microsoft Access 2003.
1) Запускаем Microsoft Access. Создаём базу данных (Файл → Создать).
2) В появившемся меню («Создание файла») выбираем пункт меню «Новая база данных».
3) Задаём местонахождение новоиспечённой базы данных.
4) В основном окне базы данных выбираем вкладку «Формы». Создаём форму в режиме конструктора.
5) В появившемся окне конструктора растягиваем будущую форму до тех размеров, которые вам нужны.
6) На панели инструментов выбираем объект «Поле со списком».
7) Размещаем его на форме.
8) В появившемся окне «Создание полей со списком» выбираем пункт «Будет введён фиксированный набор значений».
9) Вводим список значений. Нажимаем кнопку «Далее».
10) Вводим надпись, которая будет размещена слева от списка.
11) На панели инструментов выбираем объект «Поле».
12) Размещаем его на форме.
13) Выделяем наш список. Для этого нужно просто щёлкнуть по нему левой кнопкой мышки. После этого щёлкаем на нём же правой кнопкой мышки. В появившемся контекстном меню выбираем пункт «Свойства».
14) В появившемся окне выбираем вкладку «Другие». В поле «Имя» задаём имя объекту (в нашем случае имя объекта — «Listbox»). Это имя понадобится нам, чтобы обращаться к объекту из программы на Visual Basic (а точнее на VBA).
15) Теперь проделаем тоже самое с нашим текстовым полем.
16) Возвращаемся к свойствам нашего списка. Открываем вкладку «События». Выбираем элемент «После обновления». Щёлкаем по кнопке .
В появившемся окне «Построитель» выбираем пункт «Программы».
У вас должно открыться окно Visaul Basic for Applications. В нём уже будет определена процедура (метод) Listbox_AfterUpdate(). Вам остаётся только вписать следующую строчку:
If Listbox.Value = «3» Then TextBox.Enabled = False Else TextBox.Enabled = True
Закрываем окно VBA, сохраняя при этом программу.
17) Закрываем окно конструктора формы. На вопрос о сохранении созданной формы отвечаем утвердительно =)
18) В окне базы данных два раза щёлкаем по «Форме1» (во вкладке «Формы»).
19) У нас откроется окно формы. Теперь можно проверить, как оно работает.
При выборе числа, отличного от 3 текстовое поле («Поле4» на рисунке) будет доступно.
При выборе числа 3 оно станет недоступно.
20) Для того, чтобы вернуться к редактированию формы (а не запустить её) необходимо щёлкнуть по нужной форме ПРАВОЙ кнопкой мышки и выбрать пункт меню «Конструктор».