- •Введение
- •Описание связей между информационными объектами
- •Понятие "формы ввода" как инструмента просмотра таблиц и заполнения их данными
- •Использование подчиненных форм
- •Использование формы
- •Порядок выполнения лабораторной работы
- •Содержание отчета о работе
- •Контрольные вопросы
- •Понятие запроса к базе данных
- •Создание и использование qbe-запросов
- •Создание и использование sql-запросов
- •Запросы действия, параметрические и перекрестные запросы
- •Порядок выполнения лабораторной работы
- •Содержание отчета о работе
- •Контрольные вопросы
- •Операции реляционной алгебры
- •Создание отчетов
- •Группировка и сортировка данных в отчете
- •Форматирование и печать отчета
- •Порядок выполнения лабораторной работы
- •Содержание отчета о работе
- •Контрольные вопросы
Использование подчиненных форм
Форма, вставляемая в другую форму, называется подчиненной формой (или субформой). Подчиненную форму можно использовать, чтобы: показать данные из нескольких связанных отношением таблиц в одной форме; получить доступ к записям из различных таблиц в одной-единственной форме. Допустим, что в базе имеются таблицы "Вагоны", "Поезда" и "Состав поезда". Структура двух последних таблиц представлена на Рис. 2.
Очевидно, что при вводе информации о поезде в таблицу "Поезда" достаточно ввести только одну запись, в то время как в таблице "Состав поездов" каждому номеру поезда будет соответствовать несколько записей, число которых равно количеству вагонов, входящих в состав данного поезда.
|
Рис. 2 Структра таблицы "Поезда" (слева) и "Состав поездов" (справа)
В данном случае реализуется связь "один-ко-многим" (один – поезд, многие – вагоны, входящие в его состав). С другой стороны, каждому вагону из состава поезда соответствует только одна запись из таблицы "Вагоны", поскольку не может быть двух вагонов с одинаковыми инвентарными номерами. В этом случае реализуется связь "один-к-одному".
Допустим, что на железнодорожной станции сформирован поезд, состоящий из вагонов, информация о которых есть в таблице "Вагоны". Необходимо: ввести информацию о поезде в таблицу "Поезда"; выбрать из списка имеющихся вагонов те, которые войдут в состав сформированного поезда. Для этого требуется создать главную форму ввода данных о поездах и подчиненную форму ввода состава поездов. Поскольку предполагается, что список номеров вагонов уже существует, то организуем их подстановку в таблицу "Состав поездов" из таблицы "Вагоны". Для этого воспользуемся "Мастером подстановок" при определении поля "Номер" в таблице "Состав поездов". После окончания работы мастера рекомендуется щелкнуть по разделу (Подстановка) поля "Номер" и установить значение "Да" в параметре (Ограничиться списком). Это необходимо для того, чтобы оператор случайно не ввел номер вагона, которого на самом деле нет на станции.
Для создания подчиненных форм лучше всего воспользоваться мастером построения форм. В окне (Создание форм) необходимо выбрать таблицу, на основе которой будет создана главная форма, затем выбрать поля, которые будут доступны оператору через форму. Не выходя из окна выбрать таблицу, на основе которой будет создана подчиненная форма и выбрать из этой таблицы нужные поля. В нашем случае из таблицы "Поезда" следует выбрать поля: "Код станции передачи информации"; "Номер поезда"; "Код станции назначения"; "Длина состава" и "Масса состава брутто". Из таблицы "Состав поездов" достаточно выбрать единственное поле – "Номер" (Рис. 3). Следующие настройки формы, предлагаемые мастером, рекомендуется оставить без изменения.
Рис. 3 Выбор полей для главной и подчиненной форм |
Рассмотрим случай, когда на станцию или предприятие прибывают поезда и информация о вагонах, входящих в состав поезда, в базе данных отсутствует. На практике это может иметь место, например, если информация о поездах поступает в виде бумажных документов – телеграмм-натурных листов (ТГНЛ). Необходимо организовать ввод не только общей информации о поезде, но и данных о каждом вагоне, входящем в его состав. Лучшим средством для этого является подчиненная форма, входящая в состав другой подчиненной формы. В нашем случае необходимо создать подчиненную форму для таблицы "Вагоны", которая будет входить в состав подчиненной формы для таблицы "Состав поездов", а эта форма, в свою очередь, будет входить в состав главной формы для таблицы "Поезда".
Очевидно, что в нашем случае таблицы "Поезда" и "Состав поездов" будут содержать данные о сформированных на станции или на предприятии поездах. Для хранения данных о вновь прибывающих поездах необходимо создать таблицу "Состав прибывающих поездов". Её структура аналогична структуре таблицы "Состав поездов" за исключением того, что для ввода номеров вагонов не используется подстановка имеющихся в базе номеров. В разделе (Подстановка) для поля "Номер" необходимо установить параметр "Тип элемента управления" в положение "Поле".
Разработку
данной конструкции начинают с создания
главной и подчиненной форм, по описанной
выше методике. Далее следует открыть
главную форму в режиме Конструктора;
убедиться, что не включен режим вставки
подчиненной формы; установить указатель
мыши на произвольное место внутри
подчиненной формы и дважды нажать на
кнопку мыши. Подчиненная форма откроется
в режиме Конструктора. Затем,
воспользовавшись кнопкой вставки
подчиненной формы
,
нарисовать границы будущей подчиненной
формы. После этого достаточно следовать
указаниям в окнах диалога мастера по
созданию форм. Другой способ вставки
подчиненной формы в существующую форму
сводится к перемещению с помощью мыши
готовой таблицы или формы из окна базы
данных в подчиненную форму. В результате
описанных действий внутри подчиненной
формы создастся вторая подчиненная
форма.
При задании границ подчиненной формы желательно зарезервировать как можно больше места, необходимого для ее размещения на экране. В противном случае для доступа к некоторым полям ввода оператору базы данных потребуется выполнять дополнительные операции прокрутки экрана, что затрудняет использование формы. Если все-таки места для подчиненной формы отведено недостаточно много, рекомендуется вызвать конструктор главной формы и изменить границы подчиненной формы.
При разработке подчиненных форм особое внимание следует уделять корректной связи между таблицами. Для описанного случая схема данных будет выглядеть следующим образом (Рис. 4). Две одинаковые по структуре таблицы "Состав поездов" и "Состав прибывающих поездов" связаны с таблицей "Поезда" по номеру поезда (т.е. общим полем "Порядковый номер поезда"), а с таблицей "Вагоны" по инвентарным номерам вагонов (общее поле – "Номер"). Обратите внимание, что сохраняется заданная ранее связь между таблицами "Вагоны" и "Потребители", благодаря которой осуществляется корректное выполнение операции подстановки кодов потребителей в таблицу "Вагоны".
Рис. 4 Схема данных на этапе разработки подчиненных форм |
