Что такое подчиненная форма
Что такое подчиненная форма
Основным способом создания формы является использование Мастера составной формы. Мастер может создать и связать обе формы в случае, если основная форма базируется на таблице, а подчиненная форма базируется на связанной с ней другой таблице или создана на базе таблицы и запроса, содержащего поле с тем же именем и типом данных, что и ключевое поле таблицы основной формы.
В качестве примера рассмотрим задачу построения формы Успеваемость студентов, в которой отражены сведения: Фамилия, имя (таблица Сведения о студентах), предмет и оценка (таблица Годовая успеваемость группы).
Рис. 25. Внешний вид готовой формы
Верхняя (заголовочная) часть формы соответствует текущей строке таблицы Сведения о студентах и меняется при переходе от записи к записи, который может производиться с помощью стрелок, расположенных в нижней части окна. Одновременно должны меняться строки таблицы Годовая успеваемость группы, в которой выводится только информация, относящаяся к текущему студенту.
Рассмотрим более подробно те средства Access, с помощью которых может быть получен такой результат. Это так называемая сложная/или составная форма. Процесс ее создания состоит из двух принципиальных этапов:- создание основной (главной) формы. Для этого осуществляются действия, аналогичные тем, которые выполнялись при создании формы Сведения о студентах;- создание подчиненных форм. Для этого в созданную главную форму добавляется элемент управления Подчиненная форма.
При создании подчиненной формы в Access существует две принципиальные возможности:- создать новую форму на базе некоторой таблицы или запроса;- воспользоваться уже существующей формой, сделав ее подчиненной.
1. Открыть ранее созданную базу данных Группа.mdb.
3. Начать создание составной формы с использованием мастера нажатием
· в окне первого шага мастера Создания формы из таблицы
По окончании выбора нажать кнопку Д алее > ;
· в окне второго шага мастера Создания форм выбрать вид
представления данных – подчиненная форма;
· в окне третьего шага выбрать внешний вид формы, например,
· в окне четвертого шага мастера Создания форм выбрать требуемый стиль формы. По окончании выбора нажать кнопку Далее > ;
5. Сохранить подчиненную форму, ввести в окно Сохранение имя формы
Формы с подчиненной формой
Вы будете перенаправлены на Автор24
Формы с подчиненными формами используются для редактирования данных либо из двух связанных таблиц, либо из таблицы и запроса, связанных по типу связи один-ко-многим. В главной форме в подобном случае будут отражаться данные из одной записи, а в подчиненной из нескольких записей, которые, в свою очередь, будут связаны с записью главной формы. Подчиненные формы имеют, как правило, ленточный тип или табличный. Такие формы часто используются для создания вычисляемых полей, предназначенных для вычисления итоговых величин по данным записей подчиненной формы.
Пример создания формы
Рассмотрим в качестве примера создание формы, выводящей для каждого читателя библиотеки списка книг, которые находятся у него на руках, с указанием авторов книг, названий, дат выдачи и возврата, а также с использованием поля Пеня, созданным и вычисляемом в запросе, который назовем Список1. Допустим пеню начисляют в размере 1% от стоимости книги за каждый просроченный день. Выполним расчет общей суммы пени для каждого читателя. Форма будет иметь подчиненную форму, содержащую список книг читателя. Данные в подчиненную форму будут поступать из запроса Список1, который был создан ранее.
Создание макета формы с помощью Мастера форм
Начальный макет формы создадим с помощью Мастера форм, а потом улучшим его с помощью Конструктора.
Создадим форму, выполняя следующие операции с помощью Мастера форм:
Готовые работы на аналогичную тему
Редактирование формы с помощью Конструктора форм
Следующим шагом станет улучшение созданной формы с помощью Конструктора форм. Затем необходимо добавить в форму Список1 поле, в котором будет вычисляться общая сумма пени для каждого читателя. Пример формы такого типа в режиме конструктора приведен на рисунке 1. В Конструкторе форм добавлено вычисляемое поле Всего пени, расположенное в области Примечание формы.
Далее необходимо выполнить следующие действия:
Открыть подчиненную форму Список1 в режиме конструктора. В области Примечание формы создадим новое вычисляемое поле и назовем его Всего пени. В окне Свойства для графы Данные зададим формулу для вычисления суммы пени (=Sum([Пеня])). Изменим текст перед этим полем. Новая форма готова. Сохраним внесенные изменения и откроем форму для просмотра. В форме отобразятся записи обо всех выданных книгах, а также в нижнем поле общая сумма пени по всем читателям. Отметим, что размеры полей, в которых выводится информация о книгах, изменены таким образом, чтобы авторы и название книги выводились в несколько строк для более полного отображения содержания поля.
Далее займемся улучшением внешнего вида формы Читатели. Для этого необходимо открыть форму Читатели в режиме конструктора и выполнить следующие действия:
Откроем форму в режиме просмотра.
Внизу каждой формы находится элемент управления Кнопки перехода, который позволяет перемещаться по записям, создавая новые пустые записи и заполняя их. Данный элемент управления появляется в форме в случае, когда свойство формы Кнопки перехода имеет значение Да. В случае же изменения значения этого свойства на Нет данный элемент отображаться в форме не будет. В подчиненной форме данный элемент использовать не обязательно. Поэтому, снова откроем форму Список1 в режиме конструктора, откроем окно Свойства для формы, найдем свойство Кнопки перехода и изменим его значение на Нет.
Добавление подчиненной формы
В Access отношение представляет собой связь между полями с совпадающими именами двух таблиц, которая позволяет установить соответствие между записями этих таблиц. Так, например, можно связать отношением таблицы Типы и Товары, воспользовавшись установленной связью между полями КодТипа.
Каждый тип включает несколько товаров, но каждый товар может относиться только к одному типу. Это пример наиболее распространенного типа отношений, называемого один-ко-многим (то есть, одной записи в таблице Типы соответствует несколько записей в таблице Товары ).
При создании форм и запросов Access распознает отношения между базисными объектами, но не всегда правильно. Поэтому лучше установить отношения между объектами вручную, тем более что это не представляет проблемы.
В этом упражнении вы установите отношение между таблицами Типы и Товары, а затем добавите к форме Типы подчиненную форму. Подчиненная форма предназначена для просмотра товаров, принадлежащих типу, отображающемуся в главной форме. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap11\Subform. Выполните следующие шаги.
Другие типы отношений
Помимо отношения один-ко-многим, существуют отношения один-к-одному и многие-ко-многим, но они встречаются реже.
В отношении один-к-одному каждой записи в одной таблице соответствует только одна запись в другой таблице. Этот тип отношений применяется в том случае, если таблица содержит много полей. Для удобства ее можно разбить на две связанные таблицы, поместив редко используемые поля в отдельную таблицу.
Отношение многие-ко-многим не реализовано в явном виде в Access и поэтому имитируется через третью таблицу и два отношения один-ко-многим. Например, в базе данных GardenCo имеются таблицы Товары, Заказы и Детали заказа. Таблица Товары содержит по одной записи для каждого товара. Запись таблицы Заказы описывает один заказ, не включая при этом перечня заказанных товаров. Эти данные хранятся в таблице Детали заказа. То есть, одной записи в таблице Заказы соответствует несколько записей в таблице Детали заказа. Очевидно, что между таблицами Заказы и Детали заказа существует отношение один-ко-многим. Но такое же отношение связывает таблицы Товары и Детали заказа. Таблица Детали заказа является связующей в отношении многие-ко-многим между таблицами Товары и Заказы. Проще говоря, один и тот же товар может содержаться в нескольких заказах, а каждый заказ может включать несколько товаров.
На схеме данных появится линия, отображающая отношение один-ко-многим между полями КодТипа в обеих таблицах, как показано ниже.
Создание формы, содержащей подчиненную форму (форма с отношением «один-ко-многим»)
При работе с реляционными данными (т. е. связанными данными, которые хранятся в разных таблицах) нередко требуется просматривать несколько таблиц или запросов в одной форме. Например, может потребоваться одновременно просмотреть данные клиента из одной таблицы и сведения о его заказах из другой. Подчиненные формы — удобный инструмент для подобных задач, и в Access их можно быстро создать несколькими способами.
В этой статье
Сведения о подчиненных формах
Подчиненной называют форму, вставленную в другую форму. Главная форма называется основной, а форма, вложенная в нее, — подчиненной. Комбинацию формы и подчиненной формы иногда также называют иерархической формой, сочетанием основной формы и формы подробностей или комбинацией родительской и дочерней форм.
Подчиненные формы особенно удобны для отображения данных из таблиц или запросов с отношением «один-ко-многим». Отношение «один-ко-многим» представляет собой связь между двумя таблицами, при которой значение первичного ключа каждой записи в главной таблице соответствует значению в соответствующем поле или полях нескольких записей в связанной таблице. Например, можно создать форму, в которой отображаются сведения о сотрудниках и которая содержит подчиненную форму с заказами каждого сотрудника. Данные в таблице «Сотрудники» являются в отношении стороной «один». Данные в таблице «Заказы» являются в отношении стороной «многие» — для каждого сотрудника может быть несколько заказов.
1. В основной форме отображаются данные на стороне отношения «один».
2. В подчиненной форме выводятся данные на стороне отношения «многие».
Основная и подчиненная формы взаимодействуют таким образом, что в подчиненной выводятся только те записи, которые связаны с текущей записью в основной. Например, если в основной форме отображаются данные Ольги Зуевой, то в подчиненной отображаются только ее заказы. Если связь между основной и подчиненной формами была разорвана, то в подчиненной форме будут отображаться заказы всех сотрудников, а не только Ольги.
В таблице ниже определены некоторые термины, связанные с подчиненной формы. Access будет обрабатывать большинство сведений, если вы используете процедуры, которые вы используете в этой статье, но полезно знать, какие изменения происходят в дальнейшем.
Элемент управления подчиненной формы
Элемент управления, который служит для внедрения одной формы в другую. Его можно рассматривать как «представление» другого объекта в базе данных, будь то другая форма, таблица или запрос. Элемент управления подчиненной формы обладает свойствами, которые позволяют связывать данные, отображаемые в нем, с данными в основной форме.
Свойство элемента управления подчиненной формы, определяющее, какой объект в нем отображается.
Простое отображение данных в строках и столбцах, как в электронной таблице. В элементе управления подчиненной формы отображается таблица, когда объектом-источником является таблица или запрос, либо форма, для свойства «Режим по умолчанию» которой задано значение «Режим таблицы». В этих случаях подчиненную форму иногда называют таблицей или подтаблицей.
Свойство «Подчиненные поля»
Свойство элемента управления подчиненной формы, которое задает поле или поля в подчиненной форме, которые будут связывать ее с основной.
Свойство «Основные поля»
Свойство элемента управления подчиненной формы, которое задает поле или поля в основной форме, которые будут связывать ее с подчиненной.
Перед тем, как выполнить описанные в этой статье действия, мы рекомендуем настроить связи между таблицами. Это позволит Access автоматически создать связи между основными и подчиненными формами. Чтобы просмотреть, добавить или изменить связи между таблицами в базе данных, на вкладке Работа с базами данных в группе Показать или скрыть нажмите кнопку Схема данных.
Когда элемент управления подчиненной формы имеет в качестве объекта-источника форму, он содержит поля, помещенные в нее и его можно просмотреть как одиночную форму, ленточную форму или таблицу. Одним из преимуществ создания подчиненной формы на основе формы является возможность добавления вычисляемых полей в подчиненную форму, например: [Количество] * [Цена].
Можно также вставить в форму таблицу или сводное представление путем создания элемента управления подчиненной формы, объектом-источником для которого служит таблица или запрос. Дополнительные сведения см. в разделе Добавление связанных данных в форму без создания подчиненной формы.
Создание или добавление подчиненной формы
В таблице ниже представлены рекомендации по выбору процедуры, которая лучше всего подходит для конкретной ситуации.
Нужно создать в приложении Access основную и подчиненную формы и связать их.
Нужно использовать существующую форму в качестве основной, но при этом создать в Access новую подчиненную форму и добавить ее в основную.
Нужно использовать существующую форму в качестве основной и добавить в нее одну или несколько существующих форм в качестве подчиненных.
Создание формы, содержащей подчиненную форму, с помощью мастера форм
Данная процедура позволяет создать новую комбинацию формы и подчиненной формы с помощью мастера форм. Это также самый быстрый способ начать работу, если еще не были созданы формы, которые планируется использовать в качестве основной или подчиненной формы.
На вкладке Создание в группе Формы нажмите кнопку Мастер форм.
На первой странице мастера в раскрывающемся списке Таблицы и запросы выберите таблицу или запрос. Например, чтобы создать форму «Сотрудники» для отображения в подчиненной форме списка заказов для каждого сотрудника, выберите пункт Таблица: Сотрудники (сторона «один» отношения «один-ко-многим»).
Примечание: Порядок выбора таблиц и запросов не имеет значения.
Дважды щелкните поля таблицы или запроса, которые нужно включить в форму.
На той же странице мастера в раскрывающемся списке Таблицы и запросы выберите другую таблицу или запрос. В данном примере мы выберем таблицу «Заказы» (сторона «многие» связи «один-ко-многим»).
Дважды щелкните поля таблицы или запроса, которые нужно включить в форму.
При нажатии кнопки «Далее» предполагается, что связи настроены правильно до начала работы мастера, мастер спросит, как вы хотите просмотреть данные? — по какой таблице или запросу. Выберите таблицу на стороне «один» связи «один-к-многим». В этом примере для создания формы «Сотрудники» будет щелкнуть «Сотрудники». Мастер отобразит небольшую схему формы. Страница должна иметь следующий рисунок:
Поле в нижней части изображения формы обозначает подчиненную форму.
Примечание: Если запрос Выберите способ представления данных не отображается, это означает, что приложению Access не удалось обнаружить связь «один-ко-многим» между выбранными таблицами или запросами. Мастер продолжит работу, но в форму не будет добавлена подчиненная форма. Если вы хотите сначала проверить связи между таблицами, нажмите кнопку Отмена.
Установите в нижней части страницы мастера переключатель Подчиненные формы и нажмите кнопку Далее.
На странице Выберите внешний вид подчиненной формы: выберите нужный вариант макета и нажмите кнопку Далее. В макетах обоих стилей данные подчиненной формы располагаются в виде строк и столбцов, но ленточный макет имеет больше возможностей настройки. В ленточной подчиненной форме можно добавлять цвет, изображения и другие элементы форматирования, однако табличный макет компактнее, как и табличное представление таблицы.
На следующей странице мастера выберите стиль форматирования для формы и нажмите кнопку Далее. Если на предыдущей странице вы выбрали значение Табличный, выбранное форматирование стиля также применяется к подчиненной форме.
На последней странице мастера введите заголовки форм. Имена автоматически присваиваются формам на основе введенных заголовков, а надписи подчиненных форм — на основе введенных заголовков подчиненных форм.
Укажите режим, в котором вы хотите открывать форму: режим формы (чтобы можно было просмотреть или ввести данные) или Конструктор (чтобы можно было изменить ее структуру). Затем нажмите кнопку Готово.
Access создаст две формы — основную форму, которая содержит подчиненную, и саму подчиненную форму.
Добавление одной или нескольких подчиненных форм в существующую форму с помощью мастера подчиненных форм
Используйте эту процедуру для добавления одной или нескольких подчиненных форм в существующую форму. Для каждой подчиненной формы можно создать новую форму или использовать существующую.
В области навигации щелкните существующую форму правой кнопкой мыши и выберите пункт Конструктор.
На вкладке Конструктор в группе Элементы управления щелкните стрелку вниз, чтобы открыть коллекцию Элементы управления, и убедитесь в том, что установлен флажок Использовать мастера.
На вкладке Конструктор в группе Элементы управления выберите элемент Подчиненная форма/отчет.
В форме щелкните место, куда нужно поместить подчиненную форму.
Следуйте указаниям мастера.
После нажатия кнопки Готово в форму будет добавлена подчиненная форма. Если для подчиненной формы создается новая форма, а не используется существующая, новый объект формы будет создан и добавлен в область навигации.
Создание подчиненной формы путем перетаскивания одной формы в другую
Выберите эту процедуру, если нужно использовать существующую форму в качестве основной и добавить в нее одну или несколько существующих форм в качестве подчиненных.
В области навигации щелкните правой кнопкой мыши форму, которую нужно использовать в качестве основной, и выберите пункт Конструктор.
Перетащите форму, которую вы хотите использовать в качестве подчиненной, из области навигации на основную форму.
Access добавит в основную форму элемент управления подчиненной формы, который будет связан с формой, добавленной путем перетаскивания из области навигации. Он также попытается связать подчиненную форму с основной на основе отношений, определенных в базе данных.
Повторите этот шаг, чтобы добавить другие подчиненные формы в основную.
Чтобы проверить, успешно ли создана связь, на вкладке Главная в группе Режимы нажмите кнопку Режим, выберите команду Режим формы и с помощью селектора записей основной формы просмотрите несколько записей. Если в подчиненной форме правильно отображаются данные для каждого сотрудника, это означает, что процедура завершена успешно.
Если проверка не работает, это означает, что программе Access не удалось создать связь подчиненной формы с основной и свойства Подчиненные поля и Основные поля элемента управления подчиненной формы остались пустыми. Задайте значения для этих свойств вручную, выполнив указанные ниже действия.
В области навигации щелкните основную форму правой кнопкой мыши и выберите пункт Конструктор.
Щелкните элемент управления подчиненной формы один раз, чтобы выделить его.
Если область задач «Окно свойств» не отображается, нажмите клавишу F4.
В окне свойств откройте вкладку Данные.
Нажмите кнопку «Построить» рядом с полем свойства «Ребенку полей».
Будет открыто диалоговое окно Связь с полями подчиненной формы.
В списках «Поля и потомки» выберите поля, с помощью которые вы хотите связать формы, и нажмите кнопку «ОК». Если вы не знаете, какие поля использовать, нажмите кнопку «Предложить», чтобы Access попытается определить связующие поля.
Совет: Если не отображается поле, которое требуется использовать для связывания форм, возможно, придется так отредактировать источник записей основной или подчиненной формы, чтобы данное поле в нем присутствовало. Например, если форма основана на запросе, следует убедиться, что связывающее поле присутствует в результатах запроса.
Сохраните основную форму и переключитесь в режим формы, а затем проверьте, правильно ли она работает.
Открытие подчиненной формы в новом окне в Конструкторе
Если вы хотите внести изменения в структуру подчиненной формы во время работы над основной формой в Конструкторе, вы можете открыть ее в отдельном окне:
Щелкните подчиненную форму, чтобы выбрать ее.
На вкладке Конструктор в группе Сервис нажмите кнопку Подчиненная форма в новом окне.
Изменение представления по умолчанию для подчиненной формы
При добавлении подчиненной формы в форму элемент управления подчиненной формы (или отчета) отображает подчиненную форму в соответствии с ее свойством Режим по умолчанию. Ниже перечислены значения, которые можно установить для этого свойства.
При создании подчиненной формы для этого свойства может быть установлено значение Ленточные формыили Простая форма. Однако если для свойства Режим по умолчанию подчиненной формы установить значение Режим таблицы, она будет отображаться как таблица в основной форме.
Чтобы задать значение свойства Режим по умолчанию подчиненной формы, выполните указанные ниже действия.
Закройте все открытые объекты.
В области навигации щелкните подчиненную форму правой кнопкой мыши и выберите пункт Конструктор.
Если окно свойств не отображается, нажмите клавишу F4.
Убедитесь в том, что в раскрывающемся списке в верхней части окна свойств выбран пункт Форма.
На вкладке Формат окна свойств задайте для свойства Режим по умолчанию нужное значение.
Примечание: Если нужный режим отсутствует в списке, убедитесь в том, что для свойства «Режим. » установлено значение Да. Например, если нужно выбрать вариант Режим таблицы, убедитесь, что для свойства Режим таблицы установлено значение Да.
Сохраните и закройте подчиненную форму, а затем откройте основную форму, чтобы проверить результаты.
Добавление связанных данных в форму без создания подчиненной формы
Не всегда требуется создавать отдельный объект формы для отображения связанных данных. Например, если вы работаете с формой в конструкторе или макете и перетаскивайте в нее таблицу или запрос из области навигации, в Access создается набор подчиненной формы или подчиненного с данными в этом объекте. Отображение данных определяется свойством «Режим по умолчанию» объекта. Обычно для этого используется режим таблицы, но для свойства «Режим по умолчанию» таблицы или запроса можно установить значение «Одна форма», «Разделенная форма» или «Лентообразная форма», что обеспечивает большую гибкость при отображке связанных данных в формах.
Примечание: Изменение свойства Режим по умолчанию для таблицы или запроса влияет на способ их отображения при открытии из области навигации или при просмотре в элементе управления подчиненной формы или отчета. Поскольку изменение параметров отображения таблицы иногда может привести к путанице при ее открытии из области навигации, в этой процедуре рекомендуется вместо таблицы использовать запрос.
Что такое подчиненная форма
Оглавление
1. Подчинённые формы
Подчинённой формой называется форма, вставленная в основную форму. Такая форма удобна для просмотра, добавления или редактирования данных в таблицах с отношениями (связями) один ко-многим. Например, можно создать форму с подчинённой формой для отображении данных для таблиц «Группы» и «Ученики». Данные из таблицы «Группы» являются стороной «один», а данные из таблицы «Ученики» являются стороной «многие». Каждая группа содержит несколько учеников. В основной форме будут отображаться данные на стороне «один», в подчинённой форме отображаются данные на стороне «многие». С помощью такой формы удобно просматривать, добавлять, редактировать данные по конкретной группе учеников. Иначе говоря, в подчинённой форме отображаются данные соответствующие текущей записи в основной форме. Например, если текущей записью является группа учеников номер два, то в подчинённой форме отображаются имена и фамилии учащихся только из этой группы.
1.1. Создание формы с подчинённой формой
Примечание. При создании таких форм убедитесь, что ключевое поле таблицы, форма которой будет подчинённая, имеет тип данных «счётчик». В случае, если у этой таблицы ключевое поле имеет тип «числовой», то ключевое поле необходимо добавить в форму для заполнения. Так как ключевое поле не должно быть пустым.
Такую форму удобней всего создавать с помощью Мастера форм. Для этого выполните команду ленточного меню «Создание вкладка/Мастер форм». На первом шаге из раскрывающегося списка выберем таблицу «Группы» и добавим необходимые поля этой таблицы в форму. Далее, на этом же шаге мастера, из раскрывающегося списка «Таблицы или запросы» выберем таблицу «Ученики» и добавим необходимые поля.
Примечание: порядок выбора таблиц не имеет значения.
1.2. Работа с основной и подчинённой формой
При добавлении основной формы с подчинённой в Области переходов создаются два объекта: подчинённая форма и основная форма. Для работы необходимо открывать основную форму, (которая содержит в себе две формы).
Навигация в основной и подчинённой формах
Для навигации в формах используется клавиша Tab и комбинация клавиш Shift+Tab, по записям в основной и подчинённой формах. Если курсор находится в последнем поле основной формы, то нажатие клавиши Tab переведёт курсор на первое поле в подчинённой форме. Если курсор находится на последнем поле подчинённой формы, нажатие клавиши Tab переведёт курсор на следующую или новую пустую запись подчинённой формы. Для быстрой навигации по записям форм можно применять диалог «Переходов», который открывается по комбинации клавиш Alt+F5. Для быстрого перемещения с одной записи основной формы на следующую запись можно воспользоваться следующими действиями:
Или, находясь на записи основной формы, вызовите диалог «Переходов» и нажмите кнопку «Следующая запись».
1.3. Заполнение таблиц с помощью основной и подчинённой форм
Комбинацией клавиш Ctrl+Tab или Ctrl+Shift+Tab перейти на запись основной формы.
Комбинацией клавиш Alt+F5открыть диалог «Переходов». В открывшимся диалоге выберите кнопку «Новая пустая запись». Курсор перейдёт в первое пустое поле. В нашем примере это поле «Номер группы».
С помощью диалога «Переходы» можно быстро перемещаться по записям как в основной форме, так и в подчинённой форме.
2. Подтаблицы
В приложении Microsoft Access подтаблица создаётся автоматически при создании таблицы, удовлетворяющей одному из следующих критериев:
Например, есть две таблицы «ФИО» и «Данные», с которыми мы работали в первой части руководства. Эти таблицы имеют связь один к-одному.
Таблица «ФИО» содержит записи с полями «Фамилия» и «Имя» пациентов, а таблица «Данные» содержит записи с данными этих пациентов. Открыв таблицу «ФИО» в режиме «Таблица», мы имеем возможность просмотреть данные по пациенту прямо из этой таблицы. Для этого необходимо воспользоваться комбинацией клавиш Ctrl+Shift+стрелка вниз.
2.1. Вставка подтаблиц
Подтаблицы можно вставлять как в основную таблицу, так и в подтаблицу, тем самым можно просматривать данные по нескольким таблицам, открыв всего лишь одну таблицу. Например, есть три таблицы «ФИО», «Адреса» и «Телефоны». По умолчанию в этих таблицах нет подтаблиц, но есть возможность их туда вставить. Тогда можно будет открыть таблицу «ФИО», найти интересующую запись, раскрыв в ней подтаблицу «Адреса», посмотреть адрес интересующего человека. Тем временем в раскрытой подтаблице «Адреса» можно отобразить подтаблицу «Телефоны» и посмотреть нужный телефон.
Для вставки подтаблицы в основную таблицу выполните следующие действия. Откройте основную таблицу в режиме «Таблица». В нашем примере это будет таблица «ФИО». Выполните команду ленточного меню «Главная вкладка/Дополнительно кнопка с меню/Подтаблицы подменю/подтаблица». По вкладке «Главная» клавишей Tab необходимо переместиться до второй кнопки «Дополнительно» и раскрыть её клавишей [Пробел]. Далее клавишей Tab переместиться до подменю «Подтаблицы». Раскрыв это подменю нажать кнопку «Подтаблица».
Примечание. в этом же меню можно удалять подтаблицу, которая относится к открытой таблице или подтаблице. Для этого необходимо нажать кнопку «Удалить». Если в открытой таблице или подтаблице нет подтаблице, то кнопка «Удалить» будет недоступной.
После активации кнопки «Подтаблица откроется меню вставки подтаблицы.
В диалоговом окне «Вставка подтаблицы» откройте вкладку «Таблицы». Из списка таблиц выберите таблицу, которая будет в качестве подтаблицы. В поле «Подчиненные поля» выберите поле, которое требуется использовать в качестве внешнего ключа, или связанное поле, которое обеспечит данные для подтаблицы. В поле «Основные поля» выберите поле, которое требуется использовать в качестве первичного ключа, или связанное поле для главной таблицы. Нажмите кнопку «OK».
В нашем примере в качестве подтаблицы выбрана таблица «Адреса». В подчинённом поле и в основном поле выбраны ключевые поля «Код».
Для добавления подтаблицы в подтаблицу выполните следующие действия. Откройте основную таблицу (в нашем примере это таблица «ФИО»). Сочетанием клавиш Ctrl+Shift+стрелка вниз раскройте подтаблицу «Адреса». Выполните вышеописанные действия по добавлению подтаблицы «Телефоны».
Примечание. В каждой таблице или подтаблице может быть встроена только одна подтаблица.
3. Внешние данные
3.1. Импорт данных из другой базы данных
Для того чтобы импортировать объект из другой базы данных, необходимо выполнить команду ленточного меню «Внешние данные/ Access «. Откроется диалоговое окно открытие файла. В текстовой строке укажите путь до файла базы данных или нажмите кнопку «Обзор». После выбора файла откроется диалог импорта, в котором клавишей [Пробел] отметьте на вкладках нужные объекты и нажмите «Ok». Выбранные объекты импортируются в конечную базу данных. Если в конечной базе данных есть объект с таким же именем, как у импортированного объекта, то к имени импортированного объекта добавляется цифра 1, 2, и т.д.
Сохранение спецификации импорта
Для того чтобы при следующем импорте объектов произвести процедуру импорта без мастера, можно сохранить шаги импорта при завершении первой процедуры импорта. Для этого в появившимся окне диалога отметьте флаг «Сохранить шаги импорта».
В поле «Сохранить, как» введите имя спецификации импорта. При необходимости введите описание в поле «Описание». В этом же диалоге присутствует флажок «Создание задачи Outlook», который позволяет задать регулярное повторение процедуры. Если отметить этот флажок, откроется программа «Outlook». Используйте эту процедуру, чтобы завершить шаги операции.
Примечание. Если программа Outlook не установлена, будет выведено сообщение об ошибке. Если программа Outlook не настроена, откроется мастер запуска Outlook. Для настройки Outlook следуйте инструкциям мастера.
3.2. Создание связи с данными другой базы данных Access.
Связывание объектов одной базы данных с другой позволяет создать связь с данными без их импорта, так что самые свежие данные можно будет просматривать и изменять в исходной и конечной базах данных, не создавая и не поддерживая две копии одних и тех же данных. Нельзя создавать связи со следующими типами данных:
При создании связи с таблицей базы данных Access автоматически создаётся новая таблица, называемая связанной, которая обеспечивает связь с исходными записями и полями. Любые изменения данных в исходной базе данных отражаются в связанной таблице конечной базы данных, и наоборот. Однако изменить структуру связанной таблицы в конечной базе данных нельзя. Другими словами, в связанной таблице невозможны такие изменения, как добавление или удаление полей или изменение типа данных поля. Для добавления или изменения таблиц в базе данных необходимо применять запросы на добавление или изменения.
Для того чтобы выполнить связь данных с другой базой данных, необходимо выполнить команду ленточного меню «Внешние данные/ Access «. В открывшимся диалоге, в текстовой строке «Имя файла», указать путь до файла или нажать кнопку «Обзор». В этом же окне отметить радиокнопку «Создать связанную таблицу для связи с источником данных». Нажать кнопку «Открыть». В следующем окне мастера клавишей [Пробел] отметить объекты, с которыми будет создаваться связь, и нажать кнопку «Ok». В результате в конечной базе данных будет создана связанная таблица. Если в конечной базе данных уже есть таблица с таким именем, то к имени связанной таблице будет добавлена цифра 1, 2, и т. д. иначе говоря, при создании связанной таблицы данные в конечной базе данных не перезаписываются и не заменяются.
3.3. Импорт данных из других источников
Иногда приходится работать с данными, которые находятся в других программах, например, в Excel. Тогда их можно импортировать в Access. Этот способ работает лучше всего, если данные уже разделены на столбцы, как это сделано в таблице Excel. Если данные введены в текстовом редакторе, необходимо сначала разделить их на столбцы с помощью знаков табуляции либо преобразовать в таблицу в текстовом редакторе.
Для импорта данных, которые находятся в другой программе, необходимо выполнить команду ленточного меню «Внешние данные», и выбрать команду, соответствующую типу файла, из которого импортируются данные. Например, для импорта данных из таблицы Excel нажмите кнопку «Excel». Если нужный тип программы отсутствует, необходимо нажать кнопку «Дополнительно».
Например, есть текстовый файл с данными, которые необходимо импортировать в базу данных.
3.3.1. Импорт данных из текстового файла
Перед импортом таких данных необходимо подготовить этот файл, т. е. разделить данные символом-разделителем, например, символом табуляции. Необходимо в первой строке текстового файла определить и указать названия полей будущей таблицы Access. Закрыть исходный файл.
3.3.2. Импорт данных из приложения «excel»
Перед непосредственным импортом данных из книги Excel данные надо подготовить к импорту. Для этого выполните следующие действия. Определите будущие заголовки полей таблицы, т. е. впишите в нужные ячейки листа или диапазона нужные значения.
Если предполагается импортировать определённый диапазон данных, то этому диапазону необходимо дать имя. Для именования диапазона выполните следующие действия:
Примечание. Диапазоном ячеек может быть группа ячеек или одна ячейка.
Закройте исходный файл. Откройте конечную базу данных. Для того чтобы импортировать данные из этого приложения, необходимо выполнить команду ленточного меню «Внешние данные/Excel». Откроется первое диалоговое окно мастера, в котором необходимо указать путь до файла и отметить радиокнопку «Импортировать данные источника в новую таблицу в текущей базе данных». Нажать кнопку «Ok». Следующий шаг в мастере предоставляет возможность выбрать объект из книги Excel, который надо импортировать. Есть возможность импортировать лист Excel или именованный диапазон. Выберите соответствующую радиокнопку. Например, необходимо импортировать «Лист1», тогда выбираем радиокнопку «листы» и в списке листов выбираем «Лист1». Если отметить радиокнопку «Именованные диапазоны», то в следующем списке необходимо выбрать имя диапазона. Для перехода на следующий шаг нажимаем клавишу Enter или переключаемся на JAWS-курсор и нажимаем кнопку «Далее».
3.4. Связывание данных из других источников
Связывание позволяет использовать данные из файла другой программы, не импортируя их. В этом случае можно просматривать обновлённые данные как в исходной программе, так и в самой таблице Access. При этом не требуется создавать и обновлять копию данных в Access. При связывании с файлом в Access создаётся новая таблица, которая связывается с исходным файлом. Все изменения, вносимые в исходный файл, отражаются в связанной таблице. При этом изменение данных таблицы в Access не доступно. Если необходимо внести изменения в содержимое или структуру файла, следует открыть исходный файл и изменить его. Процедура связывания данных из других источников с базой данных похожа на процедуру импорта, но есть кое какие отличия. Для того чтобы выполнить эту процедуру, выполните команду ленточного меню «Внешние данные вкладка» и выберите тип нужного файла. В открывшемся диалоге мастера укажите путь до файла и отметьте радиокнопку «Создать связанную таблицу для связи с источником данных». Далее следуйте командам мастера. При связывании данных с другим источником нельзя выбирать ключевое поле, так как в связанной таблице поле «Код» будет отсутствовать. Если в базе данных уже есть одна или несколько таблиц, то в диалоге на первом шаге мастера становится доступной радиокнопка «Добавить копию записей в конец таблицы». Выберите её, если необходимо добавить какие-то данные в конец существующей таблицы. При выбранной радиокнопки «Добавить копию записей в конец таблицы» в этом же диалоге появляется список доступных таблиц. Выберите таблицу, в которую будут добавляться данные. Укажите путь до исходного файла, нажмите кнопку «OK», далее следуйте командам мастера. При добавлении данных в конец таблицы Access нужно помнить о том, что нельзя таким образом добавлять данные в связанную таблицу. Для добавления данных в связанные таблицы используйте исходный файл или запрос на добавления. Примечание. При добавлении данных в связанные таблицы добавленные данные так же добавляются в источник связанных таблиц.
4. Условия отбора
2. перед созданием запроса-действия, можно сделать копию таблицы, с которой придется работать. Для этого в области переходов поместите курсор на эту таблицу. Стандартным сочетанием клавиш скопируйте таблицу. Затем вставьте её в область переходов. Access выдаст сообщение о добавлении таблицы. К имени таблицы будет добавлено слово «Копия».
При работе с запросом-действия, будет полезно и в некоторых задачах необходимо использовать инструмент «Условия отбора».
5.1. Запросы на добавление
Запрос на добавление нужен в тех случаях, когда надо перенести данные из одной таблицы в другую или из таблицы из другой базы данных, чтобы не копировать их в ручную. Запрос такого типа создаётся в несколько этапов:
Рассмотрим запрос на добавление в одной базе данных. Предположим, что есть две таблицы «Ученики» и «Сотрудники». Необходимо перенести данные из таблицы «Ученики» в таблицу «сотрудники». Для этого выполним следующие действия.
Создаём запрос на выборку по таблице «Ученики».
Преобразовываем запрос на выборку в запрос на добавление. Для этого необходимо созданный запрос открыть в режиме «Конструктор». В ленточном меню во вкладке «Конструктор» выполняем пункт «добавление». Откроется диалог, в котором необходимо выбрать целевую таблицу, в которую будут копироваться данные. В этом же диалоге есть две радиокнопки, по умолчанию выбрана радиокнопка «Добавление записей в текущей базе данных». Если необходимо добавить данные в другую базу данных, то выберите соответствующую радиокнопку «Добавление записей в другую базу данных». Нажмите кнопку «Ok». Откроется бланк запроса на добавление. В этом бланке можно найти и просмотреть строку добавления, в которой отображаются целевые поля. Отображение целевых полей зависит от первого этапа создания запроса, т. е. от того, как был создан запрос на выборку. Если в запросе на выборку указать все поля таблицы, по которой будет создаваться запрос, например, в формате ученики. * (Звездочка), то и в строке добавления отображение будет аналогичным, т.е. Сотрудники. * (Звездочка). Если добавить отдельные поля к запросу, названия которых в исходной и конечной таблицах совпадают, Access автоматически добавляет совпадающие целевые поля в строку «Добавить к» в запросе. Если какие-либо имена в исходной и целевой таблицах не совпадают, Access добавляет совпадающие поля и оставляет отличающиеся поля пустыми.
Примечание. Если целевое поле оставлено пустым, запрос не добавит данных к этому полю. Перед выполнением запроса просмотрите результат, для этого комбинацией клавиш Ctrl+ русская точка переключитесь в режим «Таблица». Для выполнения запроса переключитесь в режим «Конструктор» и на вкладке «Конструктор» нажмите кнопку «Выполнить». Access выдаст предупреждающее сообщение, что в таблицу будет добавлено x записей. Нажмите «Да» для продолжения. Если после нажатия кнопки «Выполнить ничего не происходит, переключитесь на JAWS-курсор. Вверху страницы посмотрите, не появилось ли сообщение Access, что активное содержимое отключено. Если это сообщение появилось, то двойным щелчком мыши щёлкните по надписи «Включить активное содержимое». После включения активного содержимого повторите выполнение запроса.
5.2. Запрос на создание таблицы
Если необходимо создать таблицу на основе данных по уже созданным таблицам, то это можно сделать с помощью запроса. Запрос на создание таблицы проходит в два этапа:
Если запрос на выборку уже создан, откройте этот запрос в режиме «Конструктор». Преобразуйте этот запрос в запрос на создание таблицы. Для этого на вкладке «Конструктор» нажмите кнопку «Создание таблицы». Откроется диалог, в котором необходимо указать имя новой таблицы. С помощью выбора радиокнопок укажите, где будет сохранена новая таблица:
Нажмите кнопку «Ok». Откроется бланк запроса. Перед выполнением действий откройте запрос в режиме «Таблица» и просмотрите результат. Если результат устраивает, то переключите запрос в режим «Конструктор» и нажмите на вкладке «Конструктор» кнопку «Выполнить». Access выдаст сообщение о количестве записей, помещаемых в новую таблицу. Если в базе данных, в которую будет помещаться таблица, есть таблица с таким же именем, то Access выдаст предупреждающее сообщение, что существующая таблица будет удалена перед выполнением запроса. Если после нажатия кнопки «Выполнить ни чего не происходит, переключитесь на JAWS-курсор. Вверху страницы посмотрите, не появилось ли сообщение Access, что активное содержимое отключено. Если это сообщение появилось, то двойным щелчком мыши щелкните по надписи, «Включить активное содержимое». После включения активного содержимого повторите выполнение запроса.
5.3. Запрос на обновление
В некоторых случаях необходимо обновить записи в имеющихся таблицах. Если этих записей мало, то их можно обновить в ручную, а если записей, которые необходимо обновить, много, тогда эти записи можно обновить с помощью запроса на обновление.
В отличие от диалогового окна «Поиск и замена», запрос на обновление может принимать несколько условий и позволяет обновить большое число записей за один раз, а также изменить записи сразу в нескольких таблицах.
Процесс обновления записей в таблицах или в таблице, проходит в два этапа:
Создайте запрос на выборку по тем таблицам, в которых необходимо обновить данные. Комбинацией клавиш Ctrl+русская точка Переключите запрос в режим «Таблица», чтобы убедиться, что запрос возвратил необходимые данные. Откройте созданный запрос в режиме «Конструктор». Выполните команду ленточного меню «Конструктор вкладка/Обновление». В бланке запроса появится строка «Обновление». Переместиться в ту строку можно клавишей со стрелкой вниз. Поместите курсор в то поле, в котором необходимо обновить записи, спуститесь в строку «Обновление» и впишите значение (выражение) для обновления.
Например, необходимо для поля «Статус» изменить значение «Ученик» на значение «Выпускник». Впишите значение «Выпускник» в поле «Обновление», и выполните команду ленточного меню «Конструктор вкладка/Выполнить». Access выдаст предупреждающее сообщение, что будет заменено xxx записей. Нажмите кнопку «Да». Запрос откроется уже с обновлёнными записями. Таким же образом можно обновлять, например, поле с типом данных «логический», «нет» на «да» и наоборот.
5.3.1. Изменение записей в одной таблице на записи из другой таблицы
С помощью запроса на обновление можно заменять записи одной таблицы на запись другой таблицы.
Примечание. Для того чтобы заменить записи одной таблицы на записи другой, необходимо, чтобы эти таблицы были связанны между собой. Создание связей (отношений) см. часть первая.
Создаём запрос на выборку по этим таблицам.
В открывшемся бланке запроса указываем поля конечной таблицы. Т. е. той таблицы, в которой будут обновляться записи. Переключаем запрос в режим «Таблица», чтобы убедиться, что запрос возвратил необходимые данные. Переключаем запрос в режим «Конструктор». Преобразуем запрос на выборку в запрос на обновление. Выполняем команду ленточного меню «Конструктор вкладка/Обновление».
Откроется бланк запроса, в котором появится строка «Обновление». Перемещаем курсор в эту строку. В каждый столбец, содержащий конечное поле, добавляем имя исходной таблицы и поля исходной таблицы, соответствующее полю в конечной таблице, используя следующий синтаксис:
Имена таблицы и поля заключаются в квадратные скобки и разделяются точкой. Затем на вкладке «Конструктор» нажмите кнопку «Выполнить». Access выдаст сообщение о том, что будет заменено xxx записей. Нажмите кнопку «Да» для выполнения обновления.
5.4. Запрос на удаление
В режиме Конструктора запроса необходимо указать таблицу, в которой будут проводиться удаления. Затем определить критерии, и обязательно просмотреть результаты выполнения запроса на выборку.
Если в результате запроса присутствуют только подлежащие удалению записи, следует преобразовать его в запрос на удаление.
Удаление записей может привести к непредсказуемым результатам, в том числе и к нарушению целостности базы данных, по следующим причинам: таблица является частью отношения «один-ко-многим» и в качестве условия обеспечения целостности данных использована опция «Каскадное удаление связанных полей».
Примечание. если установлена опция «Каскадное удаление связанных полей» и вы пытаетесь удалить записи в режиме просмотра таблицы, то получите предупреждение о возможном удалении данных в других таблицах. А при использовании запросов на удаление вы не увидите предупреждения. MS Access выдаст только информацию о количестве удаляемых записей, но ничего не скажет про каскадное удаление.
Рассмотрим такой пример: есть три таблицы «ФИО», «Адреса», «телефоны». Из этих таблиц необходимо удалить записи связанные с фамилией Иванов и Иванова. Все эти таблицы связанны между собой. Для удаление этих данных сначала создадим запрос на выборку по таблице «ФИО». На вкладке «Конструктор» нажмём кнопку «Создать запрос в режиме конструктора». Добавим в бланк таблицу «ФИО». В бланке запроса укажем поле «Фамилия». Преобразуем запрос на выборку в запрос на удаление, для этого, на вкладке «конструктор» нажмём кнопку «Удаление». В бланке запроса в строке «Условие отбора» впишем: Иванов* (звездочка). Обратите внимание на синтаксис условия отбора. выражение записано в формате ИвановЗвёздочка. Звёздочка означает любой символ в конце слова. Тем самым запрос возвратит нам данные и по Иванову, и по Иванова. Переключимся в режим «Таблица», чтобы убедиться в том, что запрос возвратил нужные данные. Видим, что отобразились данные только по Иванову и по Ивановой, переключаемся в режим «Конструктор» и на вкладке конструктор жмём кнопку «Выполнить». Access выдаст диалог, что будет удалено x записей. Жмём кнопку «Да» для выполнения действия.
Рассмотрим другой пример: в таблице «ФИО» есть несколько людей с одинаковыми фамилиями, но с разными именами. Необходимо из этой базы удалить данные для Иванов Пётр и Иванова Татьяна. В базе есть ещё записи по Иванову Сергей и Ивановой Людмилы. Для осуществления такого удаления необходимо:
При таком удалении записи будут удалены во всех связанных таблицах, данные которых ссылаются на таблицу «ФИО». Иначе говоря, удалятся и адреса, и телефоны, которые относились к этим фамилиям.
Рассмотрим удаление данных из таблицы на стороне многие. Есть две таблицы «Ученики» на стороне «многие» и «Группы» на стороне «один». Необходимо удалить записи с учениками, которые учатся в группе номер три. Соответственно необходимо выполнить запрос так, чтобы он возвратил данные именно по группе номер три. Для этого выполним следующие действия.
В бланке запроса указываем таблицу, из которой будут удаляться данные (в нашем примере это таблица «Ученики»), в следующем формат:
Тем самым мы укажем программе, что данные будут удаляться именно из этой таблице.
Во втором столбце бланка запроса укажем только имя поля из таблицы «Группы», в нашем случае это будет поле «Номер группы. В этом же столбце спускаемся до ячейки «Условие отбора» и прописываем там цифру 3. Тем самым мы указали, что это поле будет условием для удаления данных из таблицы «Ученики», и удаляться будут учащиеся в третей группе.
На вкладке «Конструктор» нажимаем кнопку «Удаление», запрос преобразуется в запрос на удаление. В строке «Удаление» можно увидеть, что к столбцу таблицы «Ученики», в ячейки удаление выбран параметр «из», а в ячейки удаление для столбца «Номер группы» выбран параметр «условие». Переключаем запрос в режим «Таблица», чтобы убедиться, что запрос возвратил необходимые данные. Затем переключаем запрос в режим «Конструктор» и на вкладке «Конструктор» жмём «Выполнить». Access выдаст предупреждающее сообщение, что будет удалено x записей. Для подтверждения нажмите «Да».
Примечание. При удалении данных из таблицы на стороне «многие» не будут удалены данные из таблицы на стороне «один». При удалении данных из таблицы на стороне «один» будут удалены данные и из таблицы на стороне «многие».
Примечание. При удалении записей значение поля «Код» не пересчитывается. Другими словами, записи удаляются вместе со значением счетчика, и при дальнейшем добавлении записей в таблицу значение счетчика продолжает увеличиваться. Это связано с тем, что значение этого поля служит для связывания таблиц и является уникальным идентификатором записи в данной таблице. Если значение этого поля каждый раз пересчитывать, то будут нарушены связи с другими таблицами, которые используют это поле для сопоставления данных из связанных таблиц. Вас не должен вводить в заблуждение тип этого поля «счётчик», так как назначение этого поля выражается его названием «Код»!
Ниже приведён способ, как сбросить значения счетчика. Для этого можно воспользоваться запросом на создание таблицы. При этом нужно помнить, что связи в базе данных придётся обновлять. Задумайтесь об этом, если ваша таблица содержит много записей.
Рассмотрим такой пример: есть две таблицы «Группы» и «Ученики». Из таблицы «Ученики» было удалено x записей и, соответственно, в поле «Код» отсутствуют некоторые значения (1; 3; 4;6). Чтобы сбросить счётчик, выполним следующие действия.