В этом примере был разобран ввод параметров запроса с формы.
Сейчас рассмотрим динамическую фильтрацию поля со списком. Во втором поле со
списком будут выведены только те учебные заведения, которые закончили
абитуриенты, поступающие на специальность, указанную в первом поле.
Сначала создадим запрос, который будет отбирать учебные заведения, связанные со специальностями во второе поле со списком. Добавляем следующие таблицы и поля в запрос:
Сначала создадим запрос, который будет отбирать учебные заведения, связанные со специальностями во второе поле со списком. Добавляем следующие таблицы и поля в запрос:
Нажимаем кнопку «Итоги», устанавливаем группировку по всем
полям, чтобы в список выводились уникальные значения.
Затем определим параметр в поле «Шифр» :
[Формы]![Форма для отбора по специальности и Уз]![ПолеСпециальность]
Сохраним запрос.
Переходим в форму и добавляем новое поле со списком.
Выбираем в разделе запросов нужный запрос – ЗапросДляФильтрации
Выбираем поля для запроса:
Делаем сортировку по городу и по названию. Затем скрываем
первый столбец:
Тут оставляем строку «Код»:
Далее добавляем подпись к полю. Затем переименуем для
удобства.
Получается такой результат:
Вот такая разница получается:
Изменим запрос для запроса отбора абитуриентов, добавим в
него поле с отфильтрованным списком. В условии отбора поля «Код» помещаем
параметр – значение первого столбца поля со списком:
Сохраняем запрос.
Можно проверить на форме, все работает. Но при выборе
другого значения в поле со списком специальностей второе поле не меняется.
Нужно очистить первую строку и выполнить запрос снова.
В конструкторе формы открываем свойства поля со списком «ПолеСпециальность»,
на вкладке события ищем событие «После обновления» (AfterUpdate), выбираем
процедуру обработки события и, нажав кнопку с тремя точками, переходим в
редактор VisualBasic. Там в тексте процедуры вводим две строки (первая и
последняя уже создана):
Private Sub ПолеСпециальность_AfterUpdate()Me.ПолеУЗфильтр = NullMe.ПолеУЗфильтр.RequeryEnd Sub
Сохраняем и проверяем работу формы и запроса. Сейчас
результат можно получить гораздо быстрее, чем раньше, перебирая все строки
специальностей и учебных заведений.
