Вычисления в форме (Лабораторная работа № 8), страница 2

Поле

Таблица

Вывод на экран

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

КодПлана

План

Да

Сессия

ПланСессия

Да

КодОтделения

План

Нет

[Forms]![Главная]![КодОтделения]

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

План

Нет

[Forms]![Дисциплины]![КодСпециальности]

КодПолугодия

Семестры

Нет

[Forms]![Дисциплины]![КодПолугодия]

Курс

Семестры

Нет

[Forms]![Главная]![Курс]

Запрос ПланГруппы

Запрос предназначен для формирования перечня дисциплин, включённых в план выбранной группы в выбранном полугодии.

На базе таблиц План, Семестры и Дисциплины создайте запрос ПланГруппы, содержащий поле  КодПлана. В запросе должен быть отображены только дисциплины, включённые в план выбранной группы ([Forms] ! [Дисциплины] ! [КодГруппы]) в выбранном полугодии ([Forms] ! [Дисциплины] ! [КодПолугодия]).

Поле

Таблица

Вывод на экран

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

КодПлана

План

Да

КодГруппы

Дисциплины

Нет

[Forms]![Дисциплины]![КодОтделения]

КодПолугодия

План

Нет

[Forms]![Дисциплины]![КодПолугодия]

Запрос ПланОтсут

Запрос предназначен для формирования списка дисциплин, включённых в план выбранной специальности, но отсутствующих в плане выбранной группы.

На базе запросов ПланСеместра и ПланГруппы создайте запрос ПланОтсут, содержащий поле КодПлана и Сессия. В запросе должны быть отображены только дисциплины, включённые в план выбранной специальности, но отсутствующих в плане выбранной группы. Для создания запроса целесообразно в диалоговом окне Новый запрос выбрать мастер Записи без подчинённых.

Поле

Таблица

Вывод на экран

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

КодПлана

ПланСеместра

Да

Сессия

ПланСеместра

Да

КодПлана

ПланГруппы

Нет

Is Null

Запрос ПланДобавление

Запрос предназначен для добавления дисциплин, включённых в план выбранной специальности, но отсутствующих в плане выбранной группы.

На базе запроса таблиц ПланОтсут создайте запрос ПланДобавление, добавляющий в план группы отсутствующие дисциплины. В запросе должны быть отображены только дисциплины, включённые в план выбранной специальности, но отсутствующих в плане выбранной группы.

Поле

Добавление

КодПлана

КодПлана

Сессия

ДатаКонтроля

КодГруппы: [Forms]![Дисциплины]![КодГруппы]

КодГруппы

Модуль формы “Дисциплины”

Private Sub ОбновлениеГруппы()

Me.КодГруппы.Requery

Me.КодГруппы = DLookup("[КодГруппы]", "ИерархияГруппы")

Forms.Главная.КодГруппы = Me.КодГруппы

End Sub

Private Sub ОпределениеКурса()

Dim Критерий As String

Критерий = "КодГруппы=Forms!Главная!КодГруппы"

Forms.Главная.Курс = DLookup("[Курс]", "Группы", Критерий)

Forms.Главная.КодОтделения = DLookup("[КодОтделения]", "Группы", Критерий)

End Sub

Private Sub ОпределениеПределовДатыКонтроля()

On Error Resume Next

Dim Критерий As String

Dim Дата As Date

Критерий = "КодГода=Forms!Главная!КодГода"

Дата = DLookup("[Начало]", "УчебныйГод", Критерий)

Me.Список.Form.ДатаКонтроля.MinDate = Дата

End Sub

Private Sub Form_Load()

ОпределениеКурса

ОпределениеПределовДатыКонтроля

End Sub

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

Forms.Главная.КодГода = Me.КодГода

ОбновлениеГруппы

ОпределениеКурса

ОпределениеПределовДатыКонтроля

End Sub

Private Sub КодПолугодия_Change()

Forms.Главная.КодПолугодия = Me.КодПолугодия

End Sub

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

Forms.Главная.КодСпециальности = Me.КодСпециальности

ОбновлениеГруппы

ОпределениеКурса

End Sub

Private Sub КодГруппы_Change()

Forms.Главная.КодГруппы = Me.КодГруппы

ОпределениеКурса

End Sub

Private Sub КнопкаДобавитьДисциплины_Click()

DoCmd.SetWarnings False

DoCmd.OpenQuery "ПланДобавление"

DoCmd.SetWarnings True

Me.Список.Requery

End Sub

Private Sub КнопкаПлан_Click()

DoCmd.Close

DoCmd.OpenForm "План"

End Sub

Private Sub КнопкаОценки_Click()

DoCmd.Close

DoCmd.OpenForm "Оценки"

End Sub

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

DoCmd.Close

End Sub

Private Sub Form_Unload(Cancel As Integer)

DoCmd.SetWarnings False

DoCmd.OpenQuery "ДипломСоздать"

DoCmd.SetWarnings True

End Sub

Модуль формы “ДисциплиныГруппы”

Модуль формы ДисциплиныГруппы содержит команды проверки даты экзамена или зачёта и открытия формы Преподаватели.

Private Sub ДатаКонтроля_Change()

Dim Критерий As String

Dim Дата As Date

КодПреподавателя.SetFocus

Критерий = "КодГода=Forms!Главная!КодГода"

Дата = DLookup("[Конец]", "УчебныйГод", Критерий)

While ДатаКонтроля > Дата

ДатаКонтроля = DateAdd("yyyy", -1, ДатаКонтроля)

Wend

End Sub

Private Sub КнопкаПреподаватели_Click()

DoCmd.OpenForm "Преподаватели"

End Sub

Контрольные  вопросы

1.  Создание иерархических списков.

2.  Обновление данных.

3.  Вычисления в форме.