Настроим поля со списками рубрик и подрубрик таким образом, чтобы после выбора какой-то рубрики в поле со списком подрубрик отображались только те подрубрики, которые принадлежат выбранной рубрике. Это можно сделать только при помощи программирования.
В главном окне базы данных выбираем объект Модули, Создать (рис. 26).
Произойдет переход в редактор программного кода VBA (Visual Basic For Application)
В нём надо набрать следующие строки (или скопировать отсюда):
Option Compare Database
Option Explicit
Public NomerRub As Double
Public Function NRub() As Double
NRub = NomerRub
End Function
Затем сохраняем наш модуль (Ctrl+S), на предложение ввести имя — пишем Main (главный), и закрываем редактор VBA.
Теперь вернемся к объектам Формы (Главное окно базы) и загрузим нашу форму в режиме конструктора. В ней выделим Поле со списком рубрик Rub, откроем Панель свойств и перейдем на вкладку События. Поставим курсор в графу После обновления. Справа появится кнопка с тремя жирными точками. На рисунке 27 она отмечена красным.
После её нажатия запустится Построитель, в окошке которого надо выбрать Программы и нажать кнопку ОК. Мы снова попадем в редактор программного кода, где должны будем ввести такие строки (в то место, где установился курсор):
Private Sub ПолеСоСпискомРубрик_AfterUpdate()
NomerRub = Me!ПолеСоСпискомРубрик.Column(0)
Me!ПолеСоСпискомПодрубрик.Requery
End Sub
Заметьте, что первая и последняя строчки кода уже набраны.
Закроем редактор кода, вернемся к форме в Режиме конструктора и выделим поле со списком подрубрик. Будем менять для него запрос к источнику данных. В Панели свойств перейдем на вкладку Данные и поставим курсор в графу Источник строк (рис. 28).
Нажимаем на кнопочку с тремя точками (обведена красным), после чего попадаем в Построитель запросов (рис. 29),
в котором поле KodRub перетаскиваем на пустую графу (красная стрелка на рис. 29) и в строку Условие отбора заносим: NRub() (рис. 30).
После этого закрываем окно построителя запросов сохраняя внесенные изменения и возвращаемся к форме.
На этом шаге сделаем обработку события формы Текущая запись. В меню выбираем Правка -> Выделить форму (Ctrl+R), переходим к Панели свойств и включаем вкладку События. Ставим курсор в графу Текущая запись и нажимаем кнопку с тремя точками. В появившемся Построителе выбираем Программы и нажимаем ОК. На будущее: в этом Построителе мы всегда будем выбирать только пункт Программы. Попав в редактор кода занесем в место, где находится курсор, следующие строки:
Private Sub Form_Current()
If Not IsNull(Me!ПолеСоСпискомРубрик.Column(1)) Then
NomerRub = Me!ПолеСоСпискомРубрик.Column(0)
Me!ПолеСоСпискомПодрубрик.Requery
End If
End Sub
Заметьте, что первая и последняя строчки кода у вас уже набраны. И так будет всегда в этом редакторе.
На этом всё по данному разделу. Проверьте работу формы, вводя рубрики и подрубрики в разных записях. Они должны быть синхронизированы.
И еще маленькое замечание. Во время открытия файла базы MS Access возможно спросит: — Заблокировать небезопасные выражения? Отвечайте «Нет», это явная перестраховка. Затем последует повторное предупреждение системы безопасности — отвечайте «Открыть».
<< Предыдущая страница —123456789— Следующая страница >>
Последние комментарии