logo search
УМКДО -Информатика 2011

3.2.Создание форм с подчиненной формой

Формы с подчиненной разрешают редактировать данные или из двух связанных таблиц, или из таблицы и запроса, которые связаны типом связей один-ко-многим. Главная форма в таком случае показывает данные из одной записи, а подчиненная из нескольких записей, которые связаны с записью главной формы. Подчиненные формы должны быть типа ленточная или таблица. В таких формах часто создают вычисляемые поля, в которых вычисляют итоговые величины по данным из записей подчиненной формы.

Например, создадим форму, которая для каждого читателя выводит список книг, которые у него на руках, с указанием автора книги, названия книги, даты выдачи, даты возврата и поля Пеня, которое создано и вычисляется в запросе Список1. Пеня начисляется в размере одного процента от стоимости книги за каждый просроченный день. Подсчитаем также общую сумму пени для каждого читателя. Форма будет иметь подчиненную форму со списком книг читателя. Данные в подчиненную форму будут браться из запроса Список1, который уже создан в предшествующем пункте.

Начальный макет формы создадим с помощью Мастера форм, а потом улучшим его с помощью Конструктора.

Выполните такие операции для создания формы мастером форм:

  1. В окне базы данных выберите вкладку «Формы» и щелкните на кнопке Создать.

  2. В окне Новая форма в списке: «Выберите в качестве источника данных таблицу или запрос» раскройте список таблиц и выберите таблицу Читатели. Потом в другом поле выберите Мастер форм и щелкните на кнопке ОК.

  3. Появилось окно Создание форм. Из списка Доступные поля перенесите в список Выбранные поля поля NB, Фамилия, Кафедра и Телефон. Потом в раскрывающемся списке, расположенном выше, раскройте список таблиц и запросов, выберите запрос Список1. Его поля появятся в списке Доступные поля, перенесите в список Выбранные поля все поля запроса.

  4. В следующем окне необходимо выбрать тип изображения данных. Выберите «по Читатели», так как главной формой будет форма, которая показывает сведения о читателях. Отметьте переключатель Подчиненные формы, чтобы другие данные были вставлены в подчиненную форму, и щелкните на кнопке Далее.

  5. В следующем окне выберите вид подчиненной формы. Так как нам удобнее всего было бы видеть данные о книгах, которые читаются, представленными в виде таблицы, отметьте переключатель «ленточный» и щелкните на кнопке Далее.

  6. Выберите стиль для главной формы. Стиль показывается в окне выбора сразу же, как только вы отметите один из них. Щелкните на кнопке Далее.

  7. В следующем окне необходимо задать имена форм - главной и подчиненной. Access создал две формы, связанные одна с одной. Но вы можете корректировать их в режиме конструктора независимо одну от другой, а также пользоваться подчиненной формой не зависимо от главной. Дайте главной форме имя Читатели, а подчиненной – Список1. Щелкните на кнопке Готово и вы увидите на экране созданную форму.

На следующем шаге улучшим созданную форму с помощью Конструктора форм.

Добавим теперь в форму Список1 поле, в котором вычисляется общая сумма пени для каждого читателя. Пример такой формы в режиме конструктора приведен на рисунке 25, Конструктором форм добавлено поле “Всего пени”, которое вычисляется, и расположено в области “Примечание формы”.

Рисунок 25. Пример формы Список1 в режиме Конструктора форм

Далее идет подробное описание перечисленных действий.

Откройте подчиненную форму Список1 в режиме конструктора. В области Примечание формы создайте новое поле, которое вычисляется. Дайте ему имя “Всего пени”, и в окне Свойства для графы Данные задайте формулу: =Sum([Пеня]) , по которой будет вычисляться сумма пени. Измените текст перед этим полем, и ваша новая форма готова. Сохраните сделанные изменения и откройте форму для просмотра. Вы увидите в форме записи обо всех выданных книгах и внизу в поле общую сумму пени по всем читателям. Обратите внимание на измененные размеры полей, в которых выводится информация о

Рисунок 2.5. Пример формы Список1 в режиме Конструктора форм

книгах. Это сделано, чтобы авторы и название книги выводились в несколько строк, чтобы более полно видеть содержание поля.

Улучшим теперь вид формы Читатели. Для этого откройте форму Читатели в режиме конструктора и выполните такие действия:

а) растяните мышью область “Заголовок формы”, прибавьте элемент управления Надпись и напишите текст «Информация о читателях и выданных книгах» (рисунок 26). Измените шрифт и его размер для лучшего вида.

б) переместите поля Кафедра и Телефон вправо, чтобы освободить больше места для подчиненной формы.

в) растяните подчиненную форму на все свободное место.

Откройте форму для просмотра.

Внизу каждой формы расположен элемент управления, который называется “Кнопки перехода”. Они разрешают перемещаться по записям, создавать новые пустые записи и заполнять их. Этот элемент управления появляется в форме, если свойство формы “Кнопки перехода” имеет значение “Да”. Если изменить значения этого свойства на “Нет”, то этого элемента не будет в форме. В подчиненной форме этот элемент не нужен. Поэтому, снова откройте форму Список1 в режиме конструктора, откройте окно “Свойства” для формы, найдите свойство “Кнопки перехода”, измените на “Нет” значение.

Лабораторная работа №7. Добавление поля в таблицу в режиме Конструктора. Копирование или перемещение полей в таблице

Цель работы:

  1. Освоение режима конструктора.

  2. Освоение добавления поля в таблицу в режиме конструктора.

  3. Получение практических навыков по копированию или перемещению полей в таблице.

  4. Выполнение контрольного примера.

Режим конструктора

Этот режим используется для изменения макета (структуры) выбранной таблицы, запроса, формы, или отчета или для редактирования выбранного макроса или формы или создания новой таблицы.

ТИПЫ И СВОЙСТВА ПОЛЕЙ

Текстовый тип

Размер текстового поля - от 1 до 255 символов. Об остальных свойствах прочитать в " Справке".

Числовой тип

Размер числового поля может принимать значения: Байт - целые числа от 0 до 255;

Целое - целые числа от -32768 до +32768 -занимает 2 байта;

Длинное целое - целые числа от -2 147 483 648 до 2 147 483 648 -занимает 4 байта; Число с плавающей точкой одинарной точности (число с дробной частью) занимает 4 байта;

Число с плавающей точкой двойной точности занимает 8 байтов:

Тип "счетчик"

Счетчик - это всегда число. Служит для нумерации записей. Наращивание его значения происходит автоматически.

О типах даты, денежном и логическом типе прочитать в "Справке".

Типы данных полей меняются только в режиме Конструктора.

Задание 1. Добавление поля в таблицу в режиме Конструктора

  1. Выбрать в бланке таблицы ячейку в строке поля, над которой требуется добавить строку описания нового поля, затем Правка - Вставить строку. Будет вставлена строка нового поля.

  2. Для добавления поля в конец таблицы выбрать первую пустую строку. Выбрать в добавленной строке ячейку в столбце Имя поля и ввести имя поля. Или выбрать ячейку в столбце Имя поля и нажать кнопку Построителя на панели инструментов и выбрать поле в окне построителя полей. Построитель полей автоматически задает имя поля, тип данных и другие свойства. Каждый из этих параметров можно при желании изменить.

  3. В ячейке столбца Тип данных нажать кнопку раскрытия списка и выбрать тип данных в списке.

  4. При необходимости ввести Описание данных - это как бы более подробное, длинное имя поля или комментарий к назначению поля. Описание поля появляется в нижней части экрана, когда курсор оказывается на этом поле.

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

Задание 2. Копирование или перемещение полей в таблице

  1. Выделить поля, которые требуется скопировать или переместить.

  2. Для перемещения установить указатель на границу выделения. Нажать кнопку мыши и удерживая ее, переместить появившуюся горизонтальную полосу на границу строки, под которую требуется вставить выделенные строки.

  3. Отпустить кнопку мыши.

Задание 3. Контрольный пример

Целью данного примера является дополнение созданной БД Студент новой таблицей Результаты с результатами сессии. Затем объединение этих таблиц.

1. Рассмотрим создание таблицы в Режиме Конструктора.

Для этого в окне Access выбираем из меню Файл - Открыть базу данных, затем в окне открытия файла БД выбираем имя БД Студент - Открыть. Теперь в окне БД Студент нажимаем кнопку Конструктор..

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

Для создания таблицы необходимо, как минимум, заполнить графы Имя поля и Тип данных. Графа Описание не является обязательной и предназначена для текста подсказки, который выводится в нижней строке экрана во время работы с таблицей Чтобы задать тип поля, надо щелкнуть в соответствующей ячейке в столбце Тип данных. Это приведет к появлению символа раскрытия списка справа в выбранной ячейке. Надо открыть его и выбрать нужный тип.

2. Заполним имена полей с их типами:

Код тип Счетчик

Группа текстовый тип

Номер зачетной книжки числовой тип

Фамилия текстовый тип

3. Оценки Предмет1, Предмет2, ПредметЗ, Предмет4 - числовой тип.

  1. Создадим составной ключ, выделив строки Группа, Номер зачетной книжки и Фамилия, затем нажав на кнопку с изображением ключа или Правка – Ключевое поле.

  2. Закроем окно Конструктора. На предупреждение о сохранении макета таблицы ответить Да. Задать имя таблицы Результаты.

  3. Откроем эту таблицу в окне БД, выделив имя, затем нажав кнопку Открыть.

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

Так как в новой таблице четыре первых столбца повторяют соответствующие столбцы существующей таблицы Анкета, скопируем данные этих столбцов во вновь создаваемую таблицу через буфер обмена. Для этого:

8. Откроем окно Конструктора. При вводе значений оценок по Предметам надо заполнить Условие на значение на вкладке Общие (в нижнем окне Конструктора)- требование к вводимым данным в это поле . Оценки по предметам не могут быть больше 5 и меньше 1. Это условие записывается в виде выражения (формулы): > 0 < 6. При вводе других значений в это поле выдается сообщение об ошибке или стандартное или в виде текста, заданного пользователем.

9. Закроем окно Конструктора

10. Введем оценки по предметам.

В случае необходимости можно добавить новые записи.

11. Таблицу Результаты закроем.

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

Для того, чтобы увидеть таблицу целиком, надо нажать кнопку Удалить фильтр на панели инструментов или в меню Записи - Удалить фильтр.

13. Необходимо выбрать из таблицы всех отличников. Для этих целей опять воспользуемся фильтром.

В тех случаях, когда условие фильтрации формируется достаточно сложно, применяется расширенный фильтр. Его окно активизируется нажатием кнопки Расширенный фильтр или командой Записи - Фильтр - Расширенный фильтр. В данном случае окно разбивается на две панели.

На верхней размещается список полей, а на нижней - таблица для формирования условия фильтрации (бланк). Каждый столбец бланка предназначен для одного поля таблицы. Надо щелкнуть в первом столбце бланка. Появляется кнопка раскрытия списка. Имена полей выбираются, нажав на эту кнопку. Строки Условие отбора предназначены для ввода одного или нескольких значений поля.

При фильтрации можно ввести критерий на некоторые столбцы таблицы. В этом случае значения полей Предмет1, Прдемет2, ПредметЗ, Предмет4 в одной строке Условия отбора будут равны пятерке (5). Фильтрация отбирает записи, удовлетворяющие всем заданным условиям (объединение по И). Затем надо щелкнуть правой кнопкой мыши вне бланка, из контекстного меню выбрать Применить фильтр.

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

Чтобы высветить всю таблицу, надо щелкнуть кнопку на панели инструментов Удалить фильтр

14. Отфильтруем записи, чтобы были высвечены записи неуспевающих. Действия как в предыдущем пункте, только значения оценок - двойка (2) - надо набрать по нескольким строкам Условия отбора, т.е. фильтрация записей будет объединена по ИЛИ.

15. Теперь надо создать между таблицами Анкета и Результаты связь один - к -одному. Существуют связи (отношения):

. Наши таблицы должны быть связаны по полям: Группа, Номер зачетной книжки и Фамилия. Для определения связи между двумя таблицами (таблица Анкета будет первичной, Результаты - связанной таблицей) проделаем следующие действия:

Для изменения связи надо установить указатель на линию связи и дважды нажать кнопку мыши. Открывается окно Диалога Связи. Внести изменения в связь и нажать кнопку ОК. Для удаления связи надо выбрать линию связи (щелкнуть на линии связи) и нажать клавишу DEL. Для создания другой связи удаляем старые связи в окне Схема данных: Правка - Очистить макет.

16. Создадим Простой запрос на выборку сначала отличников, затем неуспевающих.

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

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

Для создания Запроса надо перейти в окно БД, нажать вкладку Запросы, затем кнопку Создать. (Или из меню Вставка - Запрос). В появившемся окне Нового запроса выбрать Конструктор, Ок. В окне Добавление таблицы активизировать таблицу Результаты, нажать кнопку Добавить, затем Закрыть это окно.

Открывается бланк запроса, похожий на бланк фильтрации. На верхней панели - имена полей текущей таблицы. На нижней панели надо заполнить Поля выборки (выбрать последовательно имена полей текущей таблицы, переходя от столбца к столбцу, нажав кнопку раскрытия списка) и одну строку Условия отбора. (Значения полей Предметы равны 5). Из контекстного меню верхней панели выбрать Режим таблицы или нажав кнопку Режим таблицы на панели инструментов. В окне сформированного запроса увидим отобранные записи отличников. При закрытии этого окна появляется сообщение о сохранении запроса. Если результат запроса удовлетворяет, надо его сохранить, задав имя запроса: Отличники.

Чтобы выбрать неуспевающих, надо задать двойки в разных строках Условия отбора.

17. Объединим две таблицы, используя простой запрос. Предварительно между таблицами должна быть связь один - к - одному: связаны Группа, Номер зачетной книжки и Фамилия. В окне Нового запроса Добавить обе таблицы. Затем выбрать Простой запрос - ОК. В окне Простого запроса выбрать из таблицы Анкета все поля, нажав на кнопку >> ( таким образом выбираются все поля ), а из таблицы Результаты - поля Предметы, нажимая на кнопку > (так выбираются отдельные поля). Далее выбрать подробный вывод по каждому полю каждой записи. Если некоторые поля не надо высвечивать в объединенной таблице, то в строке Вывод на экран снимите флажок. Далее задать имя запроса. Нажать Готово. На экране появится объединенная таблица, в которой присутствуют выбранные поля обеих таблиц со значениями этих полей.

18. Объединим две таблицы, используя Запрос в режиме Конструктора.

19. Закрыть БД Студент.

20. Выйти из Access.