ТЕМА : Форма “Долги”
СРОК СДАЧИ : 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. Отключение сообщений.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.