Вы находитесь на странице: 1из 6

1

Системы управления базами данныхЛабораторная работа № 8

ЛАБОРАТОРНАЯ РАБОТА № 8
ТЕМА : ВЫЧИСЛЕНИЯ В ФОРМЕ
СРОК СДАЧИ : 28.11.2003 г.
ЦЕЛЬ РАБОТЫ : Приобретение навыков вычислений в форме.
ТЕОРЕТИЧЕСКИЕ ЗНАНИЯ : Использование несвязанных таблиц в запросе.
Использование запроса “Записи без подчиненных”. Использование запроса на
добавление. Вычисления в форме.

ФОРМА “ДИСЦИПЛИНЫ”
Форма Дисциплины отображается при нажатии кнопки Дисциплины на формах Главная, План,
Оценки и предназначена для формирования плана группы.

Форма содержит четыре свободных управляющих поля со списком КодГода, КодПолугодия,


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

ЗАПРОСЫ ФОРМЫ “ДИСЦИПЛИНЫ”


Форма Дисциплины позволяет выбрать учебный год, полугодие, специальность, группу,
сформировать план группы на основании плана специальности, выбрать преподавателя, читающего
дисциплину, и установить дату проведения зачёта или экзамена.
Запрос ДисциплиныГруппы
Запрос предназначен для отображения и редактирования плана группы.
На базе таблиц Дисциплины, План, Семестры, Контроль и Предметы создайте запрос
ДисциплиныГруппы, содержащий поля: КодДисциплины, КодПредмета, Предмет, Контроль, Часы,
2
Системы управления базами данныхЛабораторная работа № 8
КодПреподавател, ДатаКонтроля, КодПолугодия, КодГруппы, КодКонтроля и Семестр. Записи
должны быть отсортированные по значению поля Предмет.

Поле Таблица Сортировка


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

Поле Таблица Условие отбора


Сессия: DateAdd("m";[Месяц];[Начало])
КодГода УчебныйГод [Forms]![Дисциплины]![КодГода]
КодПолугодия Полугодия [Forms]![Дисциплины]![КодПолугодия]

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

Поле Таблица Вывод на экран Условие отбора


КодПлана План Да
Сессия ПланСессия Да
КодОтделения План Нет [Forms]![Главная]![КодОтделения]
КодСпециальности План Нет [Forms]![Дисциплины]![КодСпециальности]
КодПолугодия Семестры Нет [Forms]![Дисциплины]![КодПолугодия]
Курс Семестры Нет [Forms]![Главная]![Курс]

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

Поле Таблица Вывод на экран Условие отбора


КодПлана План Да
КодГруппы Дисциплины Нет [Forms]![Дисциплины]![КодОтделения]
КодПолугодия План Нет [Forms]![Дисциплины]![КодПолугодия]

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

Поле Таблица Вывод на экран Условие отбора


КодПлана ПланСеместра Да
4
Системы управления базами данныхЛабораторная работа № 8
Поле Таблица Вывод на экран Условие отбора
Сессия ПланСеместра Да
КодПлана ПланГруппы Нет 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()
5
Системы управления базами данныхЛабораторная работа № 8
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
6
Системы управления базами данныхЛабораторная работа № 8
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Создание иерархических списков.
Для создания иерархических списков, которые прогрессируют по вертикали или по горизонтали, можно
создать графический элемент SmartArt, использующий макет иерархии, например Иерархия с меткой.
Иерархия представляет собой ряд упорядоченных групп людей или элементов в системе. Используя
графический элемент SmartArt в Excel, Outlook, PowerPoint или Word, вы можете создать иерархию и
включить ее в электронную почту, сообщение электронной почты, презентацию или документ.

2. Обновление данных.
При совместном доступе к базе данных по сети Microsoft Access обновляет информацию через
заданные промежутки времени. Чтобы просмотреть последние данные, обновите записи в
представлении таблицы или формы, а на вкладке "Главная" нажмите кнопку "Обновить >обновить". В
процессе обновления обновляются существующие данные в таблице или форме, а также не
переупоряджаются записи, не отображаются новые записи, а также удаляются все удаленные записи
или записи, которые больше не соответствуют указанным условиям. Для более детального или
тщательного обновления используйте макрос для повторного получения данных.

3. Вычисления в форме.
В Access можно создать вычисляемое поле в таблице. Благодаря этому для выполнения расчетов не
придется создавать отдельный запрос. С помощью выражения можно задать для поля таблицы
значение по умолчанию, которое Access будет использовать для новых записей, если не
предоставлено другое значение.

Вам также может понравиться