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

1

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

ЛАБОРАТОРНАЯ РАБОТА № 6
ТЕМА : СОЗДАНИЕ ПОДЧИНЁННЫХ ФОРМ
ЦЕЛЬ РАБОТЫ : Приобретение навыков создания подчинённых форм.
ТЕОРЕТИЧЕСКИЕ ЗНАНИЯ : Создание подчинённой формы. Основные и
подчинённые поля. Условия, необходимые для связывания основной и
подчинённой форм

МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Создание подчинённой формы
Подчинённая форма отображается как элемент управления в основной форме. Подчинённая форма
может быть связана с основной формой по значению одного, двух или трёх полей.
Для того, чтобы подчинённую форму можно было бы связать с основной необходимо выполнить
следующие условия:
⮚ Поля, по которым осуществляется связь, должны присутствовать в
таблицах или запросах, на которых основаны формы.
⮚ Подчинённая форма может содержать ещё одну подчинённую форму.
Access поддерживает два уровня вложенности.
⮚ Ленточная форма может содержать подчинённую форму только в
заголовке или примечании формы
Преимущества использования подчинённых форм:
⮚ Подчинённая форма автоматически (без написания кода) отображает
только записи, значения связанных полей которых совпадает со
значения ми соответствующих полей в основной форме.
⮚ Связываемые поля могут отсутствовать в подчинённой форме
⮚ При создании новой записи в подчинённой форме значения связанных
полей автоматически устанавливаются равными значению
соответствующих полей в основной форме
Создать подчинённую форму можно двумя способами:
⮚ Воспользоваться кнопкой Подчинённая форма/отчет на Панели
элементов
⮚ Перетащить пиктограмму подчинённой формы из окна базы данных в
основную форму, открытую в режиме конструктора.
Связывание основной и подчинённой форм
Как правило, в простых случаях мастер сам правильно выбирает поля, по которым осуществляется
связь и связывает одноимённые поля в формах. Для самостоятельного определения основных и
подчинённых полей необходимо:
⮚ выделить подчинённую форму;
⮚ открыть окно свойств элемента управления Подчинённая форма;
⮚ на вкладке Данные в поле Основные поля или
Подчинённые поля нажать кнопку;

⮚ в открывшемся диалоговом окне Связь с полями подчиненной


формы выбрать основные и подчинённые поля.
2
Системы управления базами данныхЛабораторная работа № 6

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

ЗАДАНИЕ
Создайте формы в соответствии с приведёнными образцами

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

Поле со списком КодФакультета позволяет пользователю выбрать факультет, существующий в базе


данных. Для поля со списком установлены следующие значения свойств:
Свойство Значение
Имя КодФакультета
Данные
Тип источника строк Таблица или запрос
Источник строк Факультеты
Число столбцов 2
Присоединённый столбец 1
Ширина столбцов 0см
Значение по умолчанию DLookUp("[КодФакультета]";"Факультеты")
Ширина списка Авто
Высота 0,66см
Тип фона Прозрачный
Цвет фона Такой же, как и у заголовка формы
Оформление приподнятое
Шрифт Times New Roman
Размер шрифта 13
Насыщенность полужирный
Выравнивание По центру
Поле со списком КодФакультета не изменяет данных в какой либо таблице, поскольку значение
свойства Данные не установлено. Этот поле основано на таблице Факультеты и содержит значение кода
факультета, а отображает название факультета. При открытии формы в поле отображается первый
3
Системы управления базами данныхЛабораторная работа № 6
факультет введённый в таблицу Факультеты благодаря значению свойства Значение по умолчанию,
установленному равным DLookUp("[КодФакультета]";"Факультеты").
Простая форма Специальности основана на таблице Факультеты и содержит подчинённую форму
СпециальностиФакультета, основанную на таблице Специальности. Формы связаны по значению поля
КодФакультета.
Модуль формы
Модуль формы Специальности содержит команды обновления полей списком КодСпециальности
на других формах, которые позволяют открыть форму Специальности.
Option Compare Database
Option Explicit
'процедура обработки события выгрузки текущей формы
Private Sub Form_Unload ( Cancel As Integer )
On Error Resume Next 'при возникновении ошибки передаёт управление на следующую строку
Forms.Группы.КодСпециальности.Requery
Forms.План.КодСпециальности.Requery
Forms.Анкета.КодСпециальности.Requery
Forms.Состав.КодСпециальности.Requery
Forms.Дисциплины.КодСпециальности.Requery
Forms.Задолженности.КодСпециальности.Requery
Forms.Перевод.КодСпециальности.Requery
Forms.Диплом.КодСпециальности.Requery
End Sub
Private Sub КнопкаЗакрыть_Click ()
DoCmd.Close
End Sub

ФОРМА “ГРУППЫ ”
Форма Группы отображается при нажатии кнопки Группы на формах Главная, Состав,
Дисциплины, Оценки, Задолженности, Перевод, Диплом и предназначена для отображения
существующих и ввода новых групп выбранной специальности, выбранного отделения в выбранном
учебном году. Кроме того, в форме отображается количество студентов зачисленных в группу.

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


КодСпециальности, основанные на таблицах УчебныеГода, Отделения, Специальности
соответственно.
Простая форма Группы основана на таблице Группы и содержит подчинённые формы
ГруппыСпециальности и ГруппыСпециальностиКоличество, основанные на таблице Группы и
4
Системы управления базами данныхЛабораторная работа № 6
ГруппыКоличествоВсе соответственно. Формы связаны по значению полей КодГода, КодОтделения,
КодСпециальности.

ЗАПРОСЫ ФОРМЫ “ГРУППЫ”


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

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

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


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

МОДУЛЬ ФОРМЫ “ГРУППЫ”


Модуль формы Группы содержит команды обновления полей списком КодГруппы на других
формах, которые позволяют открыть форму Группы, при выгрузке формы Группы.
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
Forms.Состав.КодГруппы.Requery
Forms.Дисциплины.КодГруппы.Requery
Forms.Долги.КодГруппы.Requery
End Sub
5
Системы управления базами данныхЛабораторная работа № 6
Private Sub КнопкаЗакрыть_Click()
DoCmd.Close
End Sub

ФОРМА “АНКЕТА”
Форма Анкета отображается при нажатии кнопки Студенты на форме Главная и предназначена
отображения существующих и ввода новых студентов и их анкетных данных.

Ленточная форма Анкета основана на запросе СтудентыУниверситета и содержит подчинённую


форму Телефоны. Формы связаны по значению полей КодСтудента.
Форма содержит поля со списком: Имя (СтудентыИмя), Отчество (СтудентыОтчество), КодПола
(Пол), КодГода (УчебныеГода), КодОбразования (Образование), КодСпециальности (Специальности).
Свойство Значение по умолчанию поля со списком КодОбразования установлено равным
DLookUp("КодОбразования";"Образование";"ПоУмолчанию=True").
Поля со списком Имя и Отчество содержат перечень имён и отчеств студентов, введённых в базу
данных и зависит от значения поля Пол.

ЗАПРОСЫ ФОРМЫ “АНКЕТА”


Запрос СтудентыУниверситета
На базе таблицы Студенты создайте запрос СтудентыУниверситета, содержащий поля:
КодСтудента, Фамилия, Имя, Отчество, ФИО, КодПола, Рождение, Адрес, КодОбразования, Возраст,
КодГода, КодСпециальности. Записи должны быть отсортированы по значению поля ФИО.
Поле Сортировка
КодСтудента
Фамилия
Имя
Отчество
ФИО:[Фамилия]&"U"&[Имя]&"U"&[Отчество] по возрастанию
КодПола
Рождение
Адрес
КодОбразования
Возраст: DateDiff("yyyy"; [Рождение];Now())
КодГода
КодСпециальности
6
Системы управления базами данныхЛабораторная работа № 6
Запросы СтудентыИмя и СтудентыОтчество
На базе таблицы Студенты создайте запрос СтудентыИмя, содержащий поле Имя. В запросе
должны быть отображены только имена пола, указанного в форме Анкета. Записи должны быть
сгруппированы по значению поля Имя и отсортированы по алфавиту.
Поле Групповая операция Сортировка Условие отбора
Имя Группировка по возрастанию
КодПола Условие [Forms]![Анкета]![КодПола]

МОДУЛЬ ФОРМЫ “АНКЕТА”


Модуль формы Анкета содержит команды обновления полей списком Имя и Отчество при
переходе на другую запись и изменении пола студента. Кроме того, при входе в поля со списком – списки
открываются.
Private Sub ОбновлениеСписковИмениОтчества()
Me.Отчество.Requery
Me.Имя.Requery
End Sub
Private Sub Form_Load()
Me.Рождение.MaxDate = DateAdd("yyyy", -14, Now())
Me.Рождение.MinDate = DateAdd("yyyy", -35, Now())
End Sub
Private Sub КодПола_Change()
If Me.КодПола.OldValue <> Me.КодПола.Value Then Имя = " " : Отчество = " "
ОбновлениеСписковИмениОтчества
End Sub
Private Sub Form_Current()
ОбновлениеСписковИмениОтчества
End Sub
Private Sub Имя_AfterUpdate()
ОбновлениеСписковИмениОтчества
End Sub
Private Sub Имя_Enter()
Me.Имя.Dropdown
End Sub
Private Sub КодСпециальности_Enter()
Me.КодСпециальности.Dropdown
End Sub
Private Sub Отчество_AfterUpdate()
ОбновлениеСписковИмениОтчества
End Sub
Private Sub Отчество_Enter()
Me.Отчество.Dropdown
End Sub
Private Sub КодПола_Enter()
Me.КодПола.Dropdown
End Sub
Private Sub Рождение_Change()
Me.КодГода.SetFocus
End Sub
7
Системы управления базами данныхЛабораторная работа № 6
Private Sub КодГода_Enter()
Me.КодГода.Dropdown
End Sub
Private Sub КодГода_Change()
Me.КодСпециальности.SetFocus
End Sub
Private Sub КнопкаНовая_Click()
DoCmd.GoToRecord , , acNewRec
End Sub
Private Sub КнопкаЗакрыть_Click()
DoCmd.Close
End Sub

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

Форма содержит три свободных управляющих поля со списком КодОтделения, КодСпециальности,


Семестр основанные на таблицах Отделения, Специальности, Семестры соответственно.
При открытии формы значения управляющих полей считываются с главной формы за счёт установки
значений по умолчанию: [Forms]![Главная]![КодОтделения], [Forms]![Главная]![КодСпециальности],
[Forms]![Главная]![Семестр].
Простая форма План основана на запросе ПланСпециальности и содержит подчинённую
ленточную форму ПланСпециальности, основанную на запросе ПланСпециальности. Формы связаны
по значению полей КодОтделения, КодСпециальности, Семестр.
Ленточная форма ПланСпециальности содержит поле со списком КодПредмета, которое основано
на SQL-запросе:
SELECT [Предметы].[КодПредмета], [Предметы].[Предмет] FROM Предметы ORDER BY
[Предметы].[Предмет];
который содержит все записи таблицы Предметы, отсортированные по алфавиту. Поле со списком
КодКотроля основано на таблице Контроль.
В примечании форма ПланСпециальности расположены поля, отображающие итоговые значения
плана текущего семестра: Дисциплин, Экзаменов, Часов, для которых значения свойства Данные
установлено равным = Count([КодПредмета]), = - Sum([КодКонтроля]), = Sum([Часы]) соответственно.
Значения других свойств приведены в таблице.
Свойство Значение
Доступ Нет
Блокировка Да
8
Системы управления базами данныхЛабораторная работа № 6
Свойство Значение
Тип фона Прозрачный
Оформление обычное
Шрифт Arial
Размер шрифта 11
Насыщенность плотный
Тип границы Отсутствует

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


Запрос ПланСпециальности
На базе таблиц План и Предметы создайте запрос ПланСпециальности, содержащий поля:
КодПредмета, Предмет, КодКонтроля, КодОтделения, КодСпециальности и Часы. Записи в запросе
должны быть отсортированы по названию предмета.
Поле Таблица Сортировка
КодПредмета План
Предмет Предметы по возрастанию
КодКонтроля План
КодСпециальности План
КодОтделения План
Семестр План
Часы План
КодГода План
КодСпециальности План

МОДУЛЬ ФОРМЫ “ПЛАН”


Модуль формы План содержит команды передачи значений управляющих полей на форму Главная.
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.Close
DoCmd.OpenForm "Предметы"
End Sub
Private Sub КнопкаЗакрыть_Click()
DoCmd.Close
End Sub
Private Sub КнопкаДисциплины_Click()
DoCmd.Close
DoCmd.OpenForm "Дисциплины"
End Sub

КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Создание подчинённой формы.
Подчиненные формы — удобный инструмент для подобных задач, и в Access их можно быстро
создать несколькими способами:
9
Системы управления базами данныхЛабораторная работа № 6
● Создание формы, содержащей подчиненную форму, с помощью мастера форм
● Добавление одной или нескольких подчиненных форм в существующую форму с помощью
мастера подчиненных форм
● Создание подчиненной формы путем перетаскивания одной формы в другую

2. Основные и подчинённые поля.


● Свойство "Подчиненные поля"
○ Свойство элемента управления подчиненной формы, которое задает поле или поля в
подчиненной форме, которые будут связывать ее с основной.
● Свойство "Основные поля"
○ Свойство элемента управления подчиненной формы, которое задает поле или поля в
основной форме, которые будут связывать ее с подчиненной.

3. Условия, необходимые для связывания основной и подчинённой форм


Связь между основной и подчиненной формой устанавливается автоматически (Подчиненные поля –
Основные поля) если ранее в схеме данных была определена связь таблиц, соответствующим
формам. Если связи между таблицами не определены в схеме данных, необходимо выполнить
действия по установке связи. В строках Подчиненные поля и Основные поля ввести имена полей, по
которым связываются таблицы.
Для включения подчиненной формы может быть также использован Мастер, который позволяет не
только включить, но и создать нужную подчиненную форму. Чтобы при нажатии кнопки Подчиненная
форма/отчет запускался Мастер необходимо предварительно на панели элементов нажать кнопку
Мастера элементов.

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