Создание подчинённых форм (Лабораторная работа № 6), страница 3

Ленточная форма Анкета основана на запросе СтудентыУниверситета и содержит подчинённую форму Телефоны. Формы связаны по значению полей КодСтудента.

Форма содержит поля со списком: Имя (СтудентыИмя), Отчество (СтудентыОтчество), КодПола (Пол), КодГода (УчебныеГода), КодОбразования (Образование), КодСпециальности (Специальности). Свойство Значение по умолчанию поля со списком КодОбразования установлено равным DLookUp("КодОбразования";"Образование";"ПоУмолчанию=True").

Поля со списком Имя и Отчество содержат перечень имён и отчеств студентов, введённых в базу данных и зависит от значения поля Пол.

Запросы формы “Анкета”

Запрос СтудентыУниверситета

На базе таблицы Студенты создайте запрос СтудентыУниверситета, содержащий поля: КодСтудента, Фамилия, Имя, Отчество, ФИО, КодПола, Рождение, Адрес, КодОбразования, Возраст, КодГода, КодСпециальности. Записи должны быть отсортированы по значению поля ФИО.

Поле

Сортировка

КодСтудента

Фамилия

Имя

Отчество

ФИО:[Фамилия]&"U"&[Имя]&"U"&[Отчество]

по возрастанию

КодПола

Рождение

Адрес

КодОбразования

Возраст: DateDiff("yyyy"; [Рождение];Now())

КодГода

КодСпециальности

Запросы СтудентыИмя и СтудентыОтчество

На базе таблицы Студенты создайте запрос СтудентыИмя, содержащий поле Имя. В запросе должны быть отображены только имена пола, указанного в форме Анкета. Записи должны быть сгруппированы по значению поля Имя и отсортированы по алфавиту.

Поле

Групповая операция

Сортировка

Условие отбора

Имя

Группировка

по возрастанию

КодПола

Условие

[Forms]![Анкета]![КодПола]

Модуль формы “Анкета”

Модуль формы Анкета содержит команды обновления полей списком Имя и Отчество при переходе на другую запись и изменении пола студента. Кроме того, при входе в поля со списком – списки открываются.

Private Sub ОбновлениеСписковИмениОтчества()

Me.Отчество.Requery

Me.Имя.Requery

End Sub

Private Sub Form_Load()

Me.Рождение.MaxDate = DateAdd("yyyy", -14, Now())

Me.Рождение.MinDate = DateAdd("yyyy", -35, Now())

End Sub

Private Sub КодПола_Change()

If Me.КодПола.OldValue <> Me.КодПола.Value Then  Имя = " " : Отчество = " "

ОбновлениеСписковИмениОтчества

End Sub

Private Sub Form_Current()

ОбновлениеСписковИмениОтчества

End Sub

Private Sub Имя_AfterUpdate()

ОбновлениеСписковИмениОтчества

End Sub

Private Sub Имя_Enter()

Me.Имя.Dropdown

End Sub

Private Sub КодСпециальности_Enter()

Me.КодСпециальности.Dropdown

End Sub

Private Sub Отчество_AfterUpdate()

ОбновлениеСписковИмениОтчества

End Sub

Private Sub Отчество_Enter()

Me.Отчество.Dropdown

End Sub

Private Sub КодПола_Enter()

Me.КодПола.Dropdown

End Sub

Private Sub Рождение_Change()

Me.КодГода.SetFocus

End Sub

Private Sub КодГода_Enter()

Me.КодГода.Dropdown

End Sub

Private Sub КодГода_Change()

Me.КодСпециальности.SetFocus

End Sub

Private Sub КнопкаНовая_Click()

DoCmd.GoToRecord , , acNewRec

End Sub

Private Sub КнопкаЗакрыть_Click()

DoCmd.Close

End Sub