Создание иерархических списков формы "Долги" (Лабораторная работа № 7)

Страницы работы

Содержание работы

Лабораторная  Работа № 7

ТЕМА :  Форма  “Долги”

СРОК  СДАЧИ :  14 ноября 2003 г.

ЦЕЛЬ РАБОТЫ :  Приобретение навыков создания иерархических списков.

ТЕОРЕТИЧЕСКИЕ ЗНАНИЯ :  Создание иерархических списков. Обновление данных. Выполнение исполняемых запросов. Отключение сообщений

Форма “Долги”

Форма Долги отображается при нажатии кнопки Долги на формах Главная, Оценки и предназначена для отображения задолженностей студентов на текущую дату.

Форма Долги содержит подчинённую форму ДолгиГруппы, которая основана на запросе ДолгиКоличество и связана с основной формой по значению полей КодПолугодия и КодГруппы.

Форма ДолгиГруппы содержит подчинённую форму ДолгиСтудента, которая основана на запросе ДолгиГруппы и связана с основной формой по значению полей КодСтудента.

Запросы формы “Долги”

Запрос ДолгиСеместра

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

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

Поле

Таблица

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

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

КодПлана

План

Да

Предмет

Предметы

Да

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

Дисциплины

Да

КодГруппы

Дисциплины

Нет

[Forms]![Главная]![КодГруппы]

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

Дисциплины

Нет

<Now()

Запрос ДолгиВсе

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

На базе запросов ДолгиСеместра и СтудентыГруппы создайте запрос ДолгиВсе, содержащий поля: Код, Предмет, КодПреподавателя, КодПлана, ФИО, КодСтудента и КодГруппы.

Поле

Таблица

Код: [КодСтудента] * 10000 + [КодПлана]

Предмет

ДолгиСеместра

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

ДолгиСеместра

КодПлана

ДолгиСеместра

ФИО

СтудентыГруппы

КодСтудента

СтудентыГруппы

КодГруппы

СтудентыГруппы

Обратите внимание на то, что запросы, на которых основан запрос ДолгиВсе, не связаны между собой. В этом случае записи “перемножаются” – если в группе 20 студентов, а в плане семестра 10 дисциплин, то запрос будет содержать 120 записей.

Другой особенностью запроса ДолгиВсе является наличие вычисляемого поля Код: [КодСтудента] * 10000 + [КодПлана]. Нам необходимо будет связать записи запроса ДолгиВсе с оценками, полученными студентами. Осуществить такую связь целесообразно с помощью комбинированного ключа Код, значение которого будет уникальным при условии: КодПлана < 10000.

Запрос ДолгиУдовлет

Запрос должен содержать положительные оценки студентов выбранной группы.

На базе таблиц Оценки, Дисциплины, Состав, ТипыОценок и Студенты создайте запрос ДолгиУдовлет, содержащий поля: Код, КодДисциплины, КодПлана, КодСтудента, КодГруппы и Удовлет.

Поле

Таблица

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

Код: [КодСтудента] * 10000 + [КодПлана]

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

Оценки

КодПлана

Дисциплины

КодСтудента

Оценки

КодГруппы

Состав

[Forms]![Главная]![КодГруппы]

Удовлет

ТипыОценок

1

Запрос ДолгиГруппы

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

На базе запросов ДолгиВсе и ДолгиУдовлет создайте запрос ДолгиГруппы, содержащий поля: ФИО, КодСтудента, Предмет, КодГруппы, КодПреподавателя и Код.

Поле

Таблица

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

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

ФИО

ДолгиВсе

Да

КодСтудента

ДолгиВсе

Да

Предмет

ДолгиВсе

Да

КодГруппы

ДолгиВсе

Да

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

ДолгиВсе

Да

Код

ДолгиУдовлет

Нет

Is Null

Запрос ДолгиКоличество

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

На базе запроса ДолгиГруппы создайте запрос ДолгиКоличество, содержащий поля: КодСтудента, ФИО, Количество и КодГруппы.

Поле

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

Сортировка

КодСтудента

Группировка

ФИО

Группировка

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

Количество: КодСтудента

Count

КодГруппы

Группировка

Запрос ПреподавателиИнициалы

Запрос предназначен для отображения фамилий преподавателей и их инициалов.

На базе таблицы Преподаватели создайте запрос ПреподавателиИнициалы, содержащий поля: КодПреподавателя и ФИО. Записи должны быть отсортированы по алфавиту.

Поле

Сортировка

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

ФИО: [Фамилия] & "U" & Mid([Имя];1;1) & "." & Mid([Отчество];1;1) & "."

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

Запрос используется в качестве источника строк для поля со списком КодПреподавателя в формах Дисциплины и Долги.

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

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 КнопкаОценки_Click()

DoCmd.OpenForm "Оценки"

DoCmd.Close acForm, "Долги"

End Sub

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

DoCmd.Close

End Sub

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

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

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

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

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

Похожие материалы

Информация о работе