Создание иерархических списков формы "Оценки" (Лабораторная работа № 7), страница 2

Запрос ОценкиДобавление

Запрос предназначен для добавления выбранной оценки выбранному студенту по выбранной дисциплине в выбранный срок.

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

Поле

Добавление

КодСтудента : [Forms]![Оценки]![Дисциплины].[Form]![Должники].[Form]![КодСтудента]

КодСтудента

Дата : [Forms]![Оценки]![Дисциплины].[Form]![Должники].[Form]![ДатаСдачи]

ДатаСдачи

КодДисциплины : [Forms]![Оценки]![Дисциплины].[Form]![КодДисциплины]

КодДисциплины

КодОценки : [Forms]![Оценки]![Дисциплины].[Form]![Должники].[Form]![КодОценки]

КодОценки

Запрос ОценкиДобавлениеВсем

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

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

Поле

Таблица

Добавление

КодСтудента: [Forms]![Оценки]![Дисциплины].[Form]![Должники].[Form]![КодСтудента]

ОценкиДолжники

КодСтудента

Дата: [Forms]![Оценки]![Дисциплины].[Form]![Должники].[Form]![ДатаСдачи]

ДатаСдачи

КодДисциплины: [Forms]![Оценки]![Дисциплины].[Form]![КодДисциплины]

КодДисциплины

КодОценки: [Forms]![Оценки]![Дисциплины].[Form]![Должники].[Form]![КодОценки]

КодОценки

Запрос ОценкиТипа

Запрос предназначен для отображения оценок, определённых для типа контроля (экзамен или зачёт) установленного для выбранной дисциплины. Запрос используется в качестве источника строк для поля ТипОценки.

На базе таблицы ТипыОценок создайте создайте запрос ОценкиТипа, содержащий поля: КодОценки, Оценка и КодКонтроля. Запрос должен содержать только оценки, определённых для типа контроля (экзамен или зачёт) установленного для выбранной дисциплины ([Forms] ! [Оценки] ! [Дисциплины] . [Form] ! [КодКонтроля]).

Поле

Сортировка

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

КодОценки

по убыванию

Оценка

КодКонтроля

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

Модуль формы “Оценки”

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

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

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

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

End Sub

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

Dim Критерий As String

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

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

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

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 Form_Current()

On Error Resume Next

Оценки.Form.КодСтудента.Requery

Оценки.Form.КодОценки.Requery

Должники.Form.КодОценки.Requery

Должники.Form.КодОценки = DLookup("[КодОценки]", "ОценкиТипа")

Должники.Form.ДатаСдачи.Value = ДатаКонтроля

End Sub

Private Sub КнопкаПредыдущая_Click()

On Error Resume Next

DoCmd.GoToRecord , , acPrevious

End Sub

Private Sub КнопкаСледующая_Click()

On Error Resume Next

DoCmd.GoToRecord , , acNext

End Sub

Модуль формы Должники

Private Sub ФИО_Click()

ФИО.SelStart = 0

ФИО.SelLength = Len(ФИО)

End Sub

Private Sub ОбновитьПодчинённыеФормы()

Forms.Оценки.Дисциплины.Form.Должники.Requery

Forms.Оценки.Дисциплины.Form.ОценкиИтого.Requery

Forms.Оценки.Дисциплины.Form.Оценки.Requery

End Sub

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

DoCmd.SetWarnings False

DoCmd.OpenQuery "ОценкиДобавление"

DoCmd.SetWarnings True

ОбновитьПодчинённыеФормы

End Sub

Private Sub КнопкаДобавитьВсе_Click()

DoCmd.SetWarnings False

DoCmd.OpenQuery "ОценкиДобавлениеВсем"

DoCmd.SetWarnings True

ОбновитьПодчинённыеФормы

End Sub

Private Sub ФИО_DblClick(Cancel As Integer)

КнопкаДобавить_Click

End Sub

Модуль формы “ОценкиСтудентов”

Private Sub Form_AfterDelConfirm(Status As Integer)

Forms.Оценки.Дисциплины.Form.Должники.Requery

End Sub

Private Sub КодОценки_Change()

DoCmd.SetWarnings False

DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

DoCmd.SetWarnings True

Forms.Оценки.Дисциплины.Form.ОценкиИтого.Requery

Forms.Оценки.Дисциплины.Form.Должники.Requery

End Sub

Private Sub Пересдача_Click()

AllowAdditions = Пересдача

End Sub

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

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

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

3.  Выполнение исполняемых запросов.

4.  Отключение сообщений.