Home » Синхронизация рубрик и подрубрик в форме ввода

Синхронизация рубрик и подрубрик в форме ввода

Настроим поля со списками рубрик и подрубрик таким образом, чтобы после выбора какой-то рубрики в поле со списком подрубрик отображались только те подрубрики, которые принадлежат выбранной рубрике. Это можно сделать только при помощи программирования.

В главном окне базы данных выбираем объект Модули, Создать (рис. 26).

Рис. 26.

Рис. 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 она отмечена красным.

Рис. 27.

Рис. 27. Начинаем задавать действия на событие После обновления

После её нажатия запустится Построитель, в окошке которого надо выбрать Программы и нажать кнопку ОК. Мы снова попадем в редактор программного кода, где должны будем ввести такие строки (в то место, где установился курсор):

Private Sub ПолеСоСпискомРубрик_AfterUpdate()
NomerRub = Me!ПолеСоСпискомРубрик.Column(0)
Me!ПолеСоСпискомПодрубрик.Requery
End Sub

Заметьте, что первая и последняя строчки кода уже набраны.

Закроем редактор кода, вернемся к форме в Режиме конструктора и выделим поле со списком подрубрик. Будем менять для него запрос к источнику данных. В Панели свойств перейдем на вкладку Данные и поставим курсор в графу Источник строк (рис. 28).

Рис. 28. Изменяем запрос к источнику данных

Рис. 28. Изменяем запрос к источнику данных

Нажимаем на кнопочку с тремя точками (обведена красным), после чего попадаем в Построитель запросов (рис. 29),

Рис. 29. Построитель запросов

Рис. 29. Построитель запросов

в котором поле KodRub перетаскиваем на пустую графу (красная стрелка на рис. 29) и в строку Условие отбора заносим: NRub() (рис. 30).

Рис. 30. Построитель запросов после изменения

Рис. 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— Следующая страница >>