Как сделать подтаблицу в access?

Подтаблицы

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

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

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

Рис. 3.32

Перейдем в режим конструктора и щелкнем в этом режиме правой кнопкой мыши по заголовку таблицы – Страны: таблица (рис. 3.33). Откроется контекстное меню, в котором надо выбрать позицию Свойства. В результате на экране появится окно Свойства таблицы, в котором нас интересует конкретная позиция Имя подтаблицы. После щелчка в этой позиции (левой кнопкой) в строке появится стрелка прокрутки

после нажатия на нее отобразится меню, содержащее те объекты базы данных (таблицы, формы, запросы), которые мы хотели бы видеть в качестве подчиненных в таблице Страны (рис. 3.34).

Рис. 3.33

Рис. 3.34

Выберем в этом меню позицию Таблица. Фирмы и после обычных преобразований (режим конструктора, сохранение изменений в таблице, окно базы данных, открытие таблицы) получим первичную таблицу Страны – рис. 3.35.

Рис. 3.35

Следует добавить, что кроме поля Имя подтаблицы необходимо заполнить еще два поля в указанном окне Свойства таблицы, а именно: Подчиненные поля и Основные поля. Их надо заполнить именами тех полей, которые являются связующими между таблицами. В данном случае подчиненным полем будет Код фирмы, основным полем – Код.

На первый взгляд эта таблица идентична предыдущей, приведенной на рис. 3.32. Однако обратите внимание на значки (+), стоящие возле каждого кода фирмы. Они указывают на то, что здесь в свернутом виде содержится информация. Если щелкнуть по такому значку, соответствующая строка раскроется, и вы увидите перечень фирм, относящихся к этой стране, в данном случае USA (см. рис. 3.36).

Рис. 3.36

Иначе говоря, на рис. 3.36 продемонстрирована иерархическая двухуровневая структура Страны и Фирмы. Теперь для таблицы второго уровня – Фирмы – выполним такие же действия с окнами Свойства таблицы и Имя подтаблицы (см. рис. 3.34). В качестве родительской таблицы примем Фирмы, а в качестве дочерней – Менеджер. Связанными полями в обеих таблицах определим Код фирмы. Тогда таблица Фирмы, в свою очередь, будет содержать свернутую информацию о менеджерах, что также показано на рис. 3.34. Если вы раскроете эту информацию, то увидите уже трехуровневую иерархическую структуру Страны, Фирмы и Менеджер (см. рис. 3.38). Таким способом в принципе можно создать иерархическое дерево. В пределах таблицы можно вложить до восьми уровней подтаблиц. Однако каждая таблица или подтаблица, как мы видим, может иметь только одну вложенную подтаблицу. Подтаблица, относящаяся к подчиненной форме, может использовать в качестве источника данных таблицу, запрос или форму.

Рис. 3.37

Рис. 3.38

Кроме того, Access 2002 автоматически создает подтаблицу в таблице, имеющей отношение «один-к-одному» или являющейся стороной «один» в отношении «один-ко-многим», если свойство таблицы Имя подтаблицы имеет значение Авто.

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

Покажем это построение с использованием более простого пути. Откроем таблицу Фирмы (рис. 3.38).

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

Рис. 3.39

Открытая таблица Фирмы будет выглядеть так, как показано на рис. 3.40.

Рис. 3.40

В качестве примера открыто два фрагмента. При этом в таблице Страны созданная раньше подтаблица (рис. 3.35) осталась неизменной. Если необходимо одним щелчком развернуть все записи подтаблицы или свернуть все раскрытые записи, следует выбрать позицию Подтаблица в меню Формат (при открытой таблице Фирмы). Эта же позиция позволяет удалить подтаблицу.

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

Таким образом, создание подтаблиц в Access правильнее отнести не к новому типу связей, а скорее к новому типу их отображения.

   • в одной или в обеих таблицах должно быть поле, принимающее уникальные (не имеющие дублей) значения во всех записях;

   • связываемые поля должны иметь одинаковые типы данных. Однако из этого правила есть два исключения:

   – поле счетчика разрешается связывать с числовым полем, если в последнем задано значение

Длинное целое;    – поле счетчика разрешается связывать с числовым полем, если для обоих полей в свойстве

Размер поля задано значение

Код репликации;    • связываемые поля числового типа должны иметь одинаковые значения свойства

Размер поля.    Для начала свяжите поле

Код в таблице

Страны с полем

Код страны в таблице

Фирмы. Для этого щелкните левой кнопкой мыши по одному из связываемых полей и, не отпуская ее, перетащите мышь на другое поле. На экране появится диалоговое окно

Изменение связей (рис. 3.30).

как сделать подтаблицу в access

   Рис. 3.30

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

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

   •

каскадное обновление связанных полей – устанавливает, что значения поля

Код страны в таблице

Фирмы изменяются в соответствии со значениями поля

Код страны в таблице

Страны. Этот флажок имеет смысл установить;

   •

каскадное удаление связанных записей – устанавливает, что если из первой таблицы будут удалены названия каких-либо стран, то удалятся и соответствующие фирмы во второй таблице. В рассматриваемой ситуации этот флажок вряд ли следует устанавливать, поскольку, во-первых, фирма может иметь дочернее отделение с тем же именем в другой стране; во-вторых, если приборы, выпускаемые этой фирмой, в базе данных остаются, то они в случае каскадного удаления могут оказаться «беспризорными».

   Заслуживает внимания клавиша

Ообъединение. Щелкнув по ней, вы откроете список возможных критериев для отбора тех записей, которые будут связываться. Вот имеющиеся варианты:

   • связь распространяется только на те записи, в которых значения обеих таблиц совпадают;

   • связь распространяется на все записи из таблицы

Страны и только на те поля таблицы

Фирмы, в которых значения, содержащиеся в объединяемых полях, совпадают;

   • связь распространяется на все записи из таблицы

Фирмы и только на те поля таблицы

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

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

   Итак, в поле

Тип отношения следует указать, какого типа отношения устанавливаются между таблицами. В данном случае это отношение

один-ко-многим.    Теперь щелкните по кнопке

Создать. В окне

Схема данных появится линия связи между таблицами

Страны и

Фирмы – рис. 3.31.

как сделать подтаблицу в access

   Рис. 3.31

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

Мастер печати связей

   Чтобы напечатать схему связей, необходимо:
   1. Открыть соответствующую базу данных.
   2. Открыть подменю Сервис в строке меню этой базы данных. Выбрать пункт Схема данных, чтобы открыть одноименное диалоговое окно.
   3. Открыть меню Файл, а в нем активизировать опцию Печать схемы данных.

Подтаблицы

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

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

   Чтобы создать подтаблицу, как обычно, сначала войдите в окно базы данных и откройте требуемую таблицу (пусть это будет таблица

Страны). Она будет выглядеть так, как показано на рис. 3.32.

как сделать подтаблицу в access

   Рис. 3.32

   Перейдем в режим конструктора и щелкнем в этом режиме правой кнопкой мыши по заголовку таблицы –

Страны: таблица (рис. 3.33). Откроется контекстное меню, в котором надо выбрать позицию

Свойства. В результате на экране появится окно

Свойства таблицы, в котором нас интересует конкретная позиция

Имя подтаблицы. После щелчка в этой позиции (левой кнопкой) в строке появится стрелка прокрутки

   после нажатия на нее отобразится меню, содержащее те объекты базы данных (таблицы, формы, запросы), которые мы хотели бы видеть в качестве подчиненных в таблице

Страны (рис. 3.34).

как сделать подтаблицу в access

   Рис. 3.33

как сделать подтаблицу в access

   Рис. 3.34

   Выберем в этом меню позицию

Таблица. Фирмы и после обычных преобразований (режим конструктора, сохранение изменений в таблице, окно базы данных, открытие таблицы) получим первичную таблицу

Страны – рис. 3.35.

как сделать подтаблицу в access

   Рис. 3.35

   Следует добавить, что кроме поля

Имя подтаблицы необходимо заполнить еще два поля в указанном окне

Свойства таблицы, а именно:

Подчиненные поля и

Основные поля. Их надо заполнить именами тех полей, которые являются связующими между таблицами. В данном случае подчиненным полем будет

Код фирмы, основным полем –

Код.    На первый взгляд эта таблица идентична предыдущей, приведенной на рис. 3.32. Однако обратите внимание на значки (+), стоящие возле каждого кода фирмы. Они указывают на то, что здесь в свернутом виде содержится информация. Если щелкнуть по такому значку, соответствующая строка раскроется, и вы увидите перечень фирм, относящихся к этой стране, в данном случае USA (см. рис. 3.36).

как сделать подтаблицу в access

   Рис. 3.36

   Иначе говоря, на рис. 3.36 продемонстрирована иерархическая двухуровневая структура

Страны и

Фирмы. Теперь для таблицы второго уровня –

Фирмы – выполним такие же действия с окнами

Свойства таблицы и

Имя подтаблицы (см. рис. 3.34). В качестве родительской таблицы примем

Фирмы, а в качестве дочерней –

Менеджер. Связанными полями в обеих таблицах определим

Код фирмы. Тогда таблица

Фирмы, в свою очередь, будет содержать свернутую информацию о менеджерах, что также показано на рис. 3.34. Если вы раскроете эту информацию, то увидите уже трехуровневую иерархическую структуру

Страны, Фирмы и

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

как сделать подтаблицу в access

   Рис. 3.37

как сделать подтаблицу в access

   Рис. 3.38

   Кроме того, Access 2002 автоматически создает подтаблицу в таблице, имеющей отношение «один-к-одному» или являющейся стороной «один» в отношении «один-ко-многим», если свойство таблицы

Имя подтаблицы имеет значение

Авто.    Но это еще не все. Подтаблицу можно создать (по мнению автора) и более простым способом. И в дополнение к этому Access 2002 позволяет создать инвертированную подтаблицу. Если подтаблица, включенная в таблицу

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

Фирмы, отобразит страны, связанные с этой фирмой.

   Покажем это построение с использованием более простого пути. Откроем таблицу

Фирмы (рис. 3.38).

   Теперь откроем меню

Вставка и в нем позицию

Подтаблица. На вкладке

Таблицы выделим

Страны. В этом случае таблица

Фирмы будет основной, а таблица

Страны – подчиненной. Поэтому в нижней части диалогового окна

Вставка подтаблицы укажем с помощью стрелок прокрутки в качестве основного поля

Код фирмы, а в качестве подчиненного –

Код (рис. 3.39).

как сделать подтаблицу в access

   Рис. 3.39

   Открытая таблица

Фирмы будет выглядеть так, как показано на рис. 3.40.

как сделать подтаблицу в access

   Рис. 3.40

   В качестве примера открыто два фрагмента. При этом в таблице

Страны созданная раньше подтаблица (рис. 3.35) осталась неизменной. Если необходимо одним щелчком развернуть все записи подтаблицы или свернуть все раскрытые записи, следует выбрать позицию

Подтаблица в меню

Формат (при открытой таблице

Фирмы). Эта же позиция позволяет удалить подтаблицу.

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

   Таким образом, создание подтаблиц в Access правильнее отнести не к новому типу связей, а скорее к новому типу их отображения.

Резюме

   1. Формирование таблиц является первым этапом создания БД, так как таблицы в Access – это те первичные, исходные файлы, на основе которых в дальнейшем строится вся база данных. Access 2002 и предыдущие версии предоставляют пользователю несколько разных вариантов построения таблиц.
   2. В настоящей главе рассматривались три варианта формирования таблиц: режим таблицы или режим ввода данных, режим конструктора и мастер таблиц. Еще два варианта создания таблиц – импорт таблиц и связь с таблицами – рассматриваются в том разделе главы 7, который посвящен объединению разнородных баз данных.
   3. Наиболее детальным, гибким и основательным (и, соответственно, самым трудоемким) методом формирования таблиц является режим конструктора.
   4. Для надежного контроля за файлами в Access предусмотрен механизм системных первичных кодов. Этот механизм очень полезен, и если у пользователя нет каких-то серьезных причин отказываться от введения первичных кодов, рекомендуется их всегда создавать.
   5. Используемые в Access типы данных очень разнообразны, и для их эффективного применения следует перед выбором типа еще раз уточнить назначение этих данных при функционировании БД.
   6. В Access 2002 предусмотрены два свойства полей: Формат и Маска ввода. Обе опции позволяют задавать формат, в котором данные вводятся или, точнее, запоминаются при вводе в таблицу.
   Свойство Формат рекомендуется применять при последовательном вводе данных в таблицу.
   Свойство Маска ввода целесообразно при отображении литеральных (символьных) констант, а также при вводе данных в пустые графы (бланки, таблицы и т. д.). При этом пользователю рекомендуется сформировать маску ввода вручную – это значительно проще.
   7. Часто поле может включать лишь определенные значения, которые иногда содержатся в заранее заданном списке, а иногда – в самом поле, вместе с произвольно вводимыми данными. В этих случаях ввод данных можно упростить и ускорить за счет использования подстановок.
   8. Для создания информационных структур можно использовать аппарат связей между таблицами, либо возможность организации вложенных подтаблиц, либо и то и другое вместе. Эти средства позволяют пользователю создавать достаточно сложные структуры данных.

   Если таблицы служат первичными, исходными элементами базы данных, то «на выходе» вы получаете формы и отчеты. Как правило, формы используются для получения ответов на запросы пользователя, записи данных в таблицы и/или изменения этих данных при их вводе либо корректировке. Отдельное направление использования представляют собой сводные таблицы и сводные диаграммы, рассматриваемые в этой главе. Для распечатки, то есть для получения копии данных на твердом носителе, применяются отчеты.
   В Access формы можно создавать разными способами:
   • посредством автоформы;
   • с помощью разных вариантов мастера форм;
   • с помощью конструктора;
   • с помощью сводной таблицы;
   • с помощью диаграммы;
   • с помощью запросов;
   • путем расширения форм за счет включения в них диаграмм, картографических данных, рисунков.
   В настоящей главе будут рассмотрены три первых способа: они позволяют строить формы, в которых значения величин, хранящихся в БД, остаются неизменными. (Изменение данных – выборочное или нет – требует создания запроса и относится уже скорее к области программирования.) Кроме того, благодаря использованию гиперссылок Access 2002 позволяет включать в формы картографические данные, рисунки и фрагменты текстовых файлов.

Использование автоформы

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

   В разделе

Объекты окна базы данных щелкните сначала по кнопке

   а затем по кнопке

   На экране появится окно

Новая форма – рис. 4.1. В этом окне надо выбрать следующие параметры:

как сделать подтаблицу в access

   Рис. 4.1

   • способ построения формы (в данном случае – автоформа). Здесь возможны пять вариантов:

   –

В столбец ;

   –

Ленточная ;

   –

Табличная ;

   –

Сводная таблица ;

   –

Сводная диаграмма ;

   • таблицу или запрос, на основе которой/которого будет построена форма (в нашем случае выберите таблицу

Фирмы).    Поскольку на рис. 4.1 выбрана автоформа

В столбец, то, задав нужные параметры и щелкнув по кнопке

ОК, вы получите созданную форму в виде столбца (см. рис. 4.2).

как сделать подтаблицу в access

   Рис. 4.2

   Как вы помните, у таблицы

Фирмы есть подчиненная таблица

Менеджер (см. рис. 3.37). Между тем, как показано на рис. 4.2, при построении автоформы посредством диалогового окна

Новая форма в готовой форме эта связь не отражена.

   Рассмотрим другой вариант создания формы с помощью автоформы. Для этого в разделе

Объекты окна базы данных нажмите кнопку

   Теперь укажите базовую таблицу (пусть это опять будет таблица

Фирмы) и выполните одно из предлагаемых действий:

   • активизируйте опцию

Автоформа в подменю

Вставка на панели меню Access;

   • щелкните по стрелке прокрутки возле кнопки

   на панели инструментов Access, а затем опять активизируйте опцию

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

Фирмы, в которую включена дочерняя форма

Менеджер. Последняя содержит запись, идентичную соответствующей строке из родительской формы

Фирмы (см. рис. 4.3).

как сделать подтаблицу в access

   Рис. 4.3

Создание формы с помощью мастера форм

   Использование мастера форм является самым удобным и быстрым способом создания формы, в которой объединены сведения из разных таблиц или запросов. При использовании мастера форм для выбора полей из одной или нескольких таблиц или запросов в приложении Microsoft Access создается простая или иерархическая форма, а также инструкция SQL для связывания формы с источником записей. Инструкция SQL содержит сведения об используемых таблицах, запросах и полях. Вопросы, связанные с использованием SQL, рассматриваются в главе 11.

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

   Начало работы будет таким же, как и при использовании автоформы: в разделе

Объекты окна базы данных щелкните по кнопке

   а затем по кнопке

   На экране появится окно

Новая форма. Теперь надо активизировать опцию

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

Мастер форм, которое является первым шагом мастера – рис. 4.4. (Кстати, если выбранных таблиц или запросов несколько, их все равно придется указывать именно в этом окне.)

   Рис. 4.4

   Открыть это окно можно и другим способом: в окне базы данных выберите вкладку

Формы и задайте позицию

Создать форму с помощью мастера.    В окне мастер интересуется, какие поля вы хотите включить в форму, и напоминает:

Вы можете выбирать поля более чем из одной таблицы или запроса.    Теперь с помощью кнопки

   или

   перенесите в создаваемую форму поля из таблицы (запроса) – поодиночке или все сразу. Поскольку вы строите форму на основе таблиц

Фирмы и

Менеджер, то в поле

Таблицы и запросы выбираете таблицу

Менеджер. Затем помечаете для будущей формы четыре первых поля из таблицы

Фирмы и все поля из таблицы

Менеджер. В результате окно

Мастер форм будет выглядеть так, как показано на рис. 4.5. На очередном этапе работы надо щелкнуть по кнопке

Далее.

   Рис. 4.5

   Следующее окно (см. рис. 4.6) предлагает пользователю выбрать один из вариантов итоговой формы:

В каком виде вы хотите представить данные?.

   Рис. 4.6

   Сначала вы решаете, следует ли остановиться на варианте

Подчиненные формы, схематично представленном на рис. 4.6, или предпочесть

Связанные формы, то есть соединение основной формы и подчиненной, как показано на рис. 4.7. Еще один необходимый выбор – с точки зрения какой таблицы должна быть представлена итоговая форма:

Фирмы или

Менеджер. О различии между ними будет сказано дальше. Пока же отметим, что если вы отдадите предпочтение варианту

Менеджер, то это исключит возможность первого выбора

Фирмы – он просто отменяется.

   Рис. 4.7

   Затем, щелкая по кнопке

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

   Рис. 4.8

   На следующем шаге мастер спросит у вас, какой стиль должна иметь проектируемая форма (рис. 4.9).

   Рис. 4.9

   Ответив на эти вопросы, вы увидите заключительное окно, показанное на рис. 4.10. Здесь мастер предлагает выбрать имя формы, а также указать, как она будет использоваться в дальнейшем.

   Рис. 4.10

   Если вы хотите открыть форму для того, чтобы изменить ее макет, то попадете в режим конструктора форм, о чем речь пойдет ниже. Согласившись с первым вариантом, вы получите итоговую форму; ее вид зависит от тех решений, которые принимались вами на промежуточных этапах работы с мастером. Например, на рис. 4.11 показана вложенная форма с подчиненной формой в виде таблицы и основной – в виде столбца. Здесь основная или ведущая форма – это

Фирмы, поэтому ее поле номера записи является независимым и первичным, а записи в форме

Менеджер активизируются только тогда, когда идет работа с данными о соответствующей фирме.

   Рис. 4.11

   Форма с подчиненной и основной формами, расположенными в столбец, показана на рис. 4.12. Роль подчиненной формы

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

   Рис. 4.12

   Наконец, еще один довольно интересный пример – форма, созданная «с точки зрения» таблицы

Менеджер (см. рис. 4.13). Эта форма является инвертированной и в паре форм

Фирмы

Менеджер становится ведущей. Независимым и первичным здесь является поле номера записи в форме

Менеджер, и в соответствии с заданным номером меняются записи в форме

Фирмы. Подобным же образом создаются и другие формы.

   Рис. 4.13

   Итак, вы убедились, что по сравнению с автоформой мастер форм предоставляет пользователю значительно больше возможностей и позволяет быстро создавать разнообразные формы. Но и у мастера форм есть ограничения. Так, не допускается изменять размеры полей или их дизайн; добавлять в формы новые сведения, если они не связаны с записями в таблицах или не содержатся в запросах; вводить в формы принципиально иную, например картографическую, информацию.

   Кроме того, мастер форм не позволяет вносить в формы элементы программирования (или наоборот – включать формы в состав программ). Зато все вышеперечисленное позволяет осуществить конструктор форм. Настало время подробно рассмотреть возможности его использования для тщательного проектирования и изменения форм. Все аспекты, связанные с программированием, будут исследованы в главах 9-12.

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

   Использовать конструктор форм целесообразно для создания форм, которые не просто содержат комбинацию полей из разных таблиц, но включают какие-то уникальные элементы, причем не обязательно связанные напрямую с исходными полями. Например, в режиме конструктора можно разработать начальную форму БД. Такая форма в базе данных играет роль одновременно титульного листа и оглавления в книге. Открыв эту форму и, следовательно, саму базу данных, пользователь может нажатием соответствующей кнопки выйти из начальной формы в любую необходимую точку БД (поэтому иногда эта форма называется «кнопочная»). Конечно, наличие такой формы ни в коей мере не является обязательным – в конце концов, любой объект БД можно активизировать и из окна базы данных, и от этого она хуже работать не станет. И все-таки начальная форма, которую вы создали по своему усмотрению, – это «собственное лицо» вашей базы данных, и работать с ней будет приятнее.

   Итак, создадим с помощью конструктора начальную форму для базы данных

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

   • Страны;

   • Фирмы;

   • Менеджер;

   • Типы приборов;

   • Назначение;

   • Приборы;

   • Закрытие и выход из базы данных.

   Разумеется, начальная форма может выполнять и целый ряд других функций, которые здесь не рассматриваются.

   Создание форм

Фирмы и

Менеджер подробно описано в предыдущих разделах. Процесс построения остальных форм не рассматривается специально: в основном он аналогичен изученному выше, и пользователь самостоятельно освоит его за несколько минут.

   Процесс создания начальной формы начните с открытия окна конструктора форм. Для этого в разделе

Объекты окна базы данных надо щелкнуть по кнопке

   а затем выполнить одно из предлагаемых действий:

   • щелкнуть по кнопке

   Когда на экране появится окно

Новая форма, показанное на рис. 4.1, следует выбрать опцию

Конструктор;    • щелкнуть по кнопке

   • выбрать позицию

Создать форму в режиме конструктора .

   В результате на экране возникнет пустая форма конструктора (см. рис. 4.14) с подзаголовком

Область данных. Рядом с этой пустой формой появится окно панели инструментов (см. рис. 4.15). Здесь собраны кнопки, с помощью которых в режиме конструктора создаются всевозможные формы. Если установить на любой кнопке указатель мыши, появится подсказка с именем кнопки.

Организация связей между таблицами

Исходные таблицы в Access представляют собой обычные плоские таблицы Конечно, они не позволяют формировать иерархические информационные структуры; для данной цели используется аппарат связей между таблицами. Access 2002 дает возможность организовывать и отображать эти связи двумя способами:

• путем создания непосредственных связей между таблицами;

• путем создания вложенных таблиц данных.

Кроме того, в Access 2002, так же как и в Access предыдущих версий, существует довольно мощный аппарат гиперссылок, который применим для формирования таблиц и форм. Мы обсудим возможности использования гиперссылок на примере работы с географическими картами в главе 4.

Создание связей между таблицами

Когда между двумя таблицами устанавливается связь, это означает, что величины из одной таблицы ставятся в соответствие величинам из другой таблицы.

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

на панели базы данных. Другой способ: находясь в любом диалоговом окне Access 2002, воспользуйтесь функциональной клавишей F11. Затем щелкните по кнопке

открывающей схему данных, на панели инструментов. Если в базе данных еще не определено никаких связей, на экран будет выведено окно Добавление таблицы (см. рис. 3.28). Если же в открытую на экране схему данных, пример которой показан на рис. 2.1, необходимо добавить таблицы, которых в этой схеме еще нет, щелкните по кнопке

на панели инструментов открытой схемы данных.

Рис. 3.28

Итак, вы последовательно добавляли все таблицы, то есть помечали их в окне и затем щелкали по клавише Добавить в окне, показанном на рис. 3.28. Теперь закройте это окно с помощью кнопки Закрыть. В результате появится диалоговое окно Схема данных, представленное на рис. 3.29. В этом окне вы должны организовать связи между таблицами. Связи устанавливаются через отдельные, определяемые пользователем поля. Для связывания этих полей надо выбрать поле в одной таблице и перетащить его, наложив на соответствующее поле в другой таблице.

Рис. 3.29

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

• в одной или в обеих таблицах должно быть поле, принимающее уникальные (не имеющие дублей) значения во всех записях;

• связываемые поля должны иметь одинаковые типы данных. Однако из этого правила есть два исключения:

– поле счетчика разрешается связывать с числовым полем, если в последнем задано значение Длинное целое;

– поле счетчика разрешается связывать с числовым полем, если для обоих полей в свойстве Размер поля задано значение Код репликации;

• связываемые поля числового типа должны иметь одинаковые значения свойства Размер поля.

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

Рис. 3.30

В левой части этого окна указано связываемое поле родительской таблицы, а в правой – связываемое поле дочерней таблицы. Если надо изменить одно из этих полей, можно щелкнуть в нем по стрелке прокрутки, а затем выбрать желаемое значение. Установив флажок Обеспечение целостности данных, вы зададите условие: ни в одной из связанных таблиц не будет записей, у которых нет соответствующих «партнеров» в другой таблице. Еще два флажка определяют режимы обновления и удаления полей:

каскадное обновление связанных полей – устанавливает, что значения поля Код страны в таблице Фирмы изменяются в соответствии со значениями поля Код страны в таблице Страны. Этот флажок имеет смысл установить;

каскадное удаление связанных записей – устанавливает, что если из первой таблицы будут удалены названия каких-либо стран, то удалятся и соответствующие фирмы во второй таблице. В рассматриваемой ситуации этот флажок вряд ли следует устанавливать, поскольку, во-первых, фирма может иметь дочернее отделение с тем же именем в другой стране; во-вторых, если приборы, выпускаемые этой фирмой, в базе данных остаются, то они в случае каскадного удаления могут оказаться «беспризорными».

Заслуживает внимания клавиша Ообъединение. Щелкнув по ней, вы откроете список возможных критериев для отбора тех записей, которые будут связываться. Вот имеющиеся варианты:

• связь распространяется только на те записи, в которых значения обеих таблиц совпадают;

• связь распространяется на все записи из таблицы Страны и только на те поля таблицы Фирмы, в которых значения, содержащиеся в объединяемых полях, совпадают;

• связь распространяется на все записи из таблицы Фирмы и только на те поля таблицы Страны, в которых значения объединяемых полей совпадают.

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

Итак, в поле Тип отношения следует указать, какого типа отношения устанавливаются между таблицами. В данном случае это отношение один-ко-многим.

Теперь щелкните по кнопке Создать. В окне Схема данных появится линия связи между таблицами Страны и Фирмы – рис. 3.31.

Рис. 3.31

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

Мастер печати связей

Чтобы напечатать схему связей, необходимо:

1. Открыть соответствующую базу данных.

2. Открыть подменю Сервис в строке меню этой базы данных. Выбрать пункт Схема данных, чтобы открыть одноименное диалоговое окно.

3. Открыть меню Файл, а в нем активизировать опцию Печать схемы данных.

Подтаблицы

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

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

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

Рис. 3.32

Перейдем в режим конструктора и щелкнем в этом режиме правой кнопкой мыши по заголовку таблицы – Страны: таблица (рис. 3.33). Откроется контекстное меню, в котором надо выбрать позицию Свойства. В результате на экране появится окно Свойства таблицы, в котором нас интересует конкретная позиция Имя подтаблицы. После щелчка в этой позиции (левой кнопкой) в строке появится стрелка прокрутки

после нажатия на нее отобразится меню, содержащее те объекты базы данных (таблицы, формы, запросы), которые мы хотели бы видеть в качестве подчиненных в таблице Страны (рис. 3.34).

Рис. 3.33 Рис. 3.34

Выберем в этом меню позицию Таблица. Фирмы и после обычных преобразований (режим конструктора, сохранение изменений в таблице, окно базы данных, открытие таблицы) получим первичную таблицу Страны – рис. 3.35.

Рис. 3.35

Следует добавить, что кроме поля Имя подтаблицы необходимо заполнить еще два поля в указанном окне Свойства таблицы, а именно: Подчиненные поля и Основные поля. Их надо заполнить именами тех полей, которые являются связующими между таблицами. В данном случае подчиненным полем будет Код фирмы, основным полем – Код.

На первый взгляд эта таблица идентична предыдущей, приведенной на рис. 3.32. Однако обратите внимание на значки (+), стоящие возле каждого кода фирмы. Они указывают на то, что здесь в свернутом виде содержится информация. Если щелкнуть по такому значку, соответствующая строка раскроется, и вы увидите перечень фирм, относящихся к этой стране, в данном случае USA (см. рис. 3.36).

Рис. 3.36

Иначе говоря, на рис. 3.36 продемонстрирована иерархическая двухуровневая структура Страны и Фирмы. Теперь для таблицы второго уровня – Фирмы – выполним такие же действия с окнами Свойства таблицы и Имя подтаблицы (см. рис. 3.34). В качестве родительской таблицы примем Фирмы, а в качестве дочерней – Менеджер. Связанными полями в обеих таблицах определим Код фирмы. Тогда таблица Фирмы, в свою очередь, будет содержать свернутую информацию о менеджерах, что также показано на рис. 3.34. Если вы раскроете эту информацию, то увидите уже трехуровневую иерархическую структуру Страны, Фирмы и Менеджер (см. рис. 3.38). Таким способом в принципе можно создать иерархическое дерево. В пределах таблицы можно вложить до восьми уровней подтаблиц. Однако каждая таблица или подтаблица, как мы видим, может иметь только одну вложенную подтаблицу. Подтаблица, относящаяся к подчиненной форме, может использовать в качестве источника данных таблицу, запрос или форму.

Рис. 3.37 Рис. 3.38

Кроме того, Access 2002 автоматически создает подтаблицу в таблице, имеющей отношение «один-к-одному» или являющейся стороной «один» в отношении «один-ко-многим», если свойство таблицы Имя подтаблицы имеет значение Авто.

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

Покажем это построение с использованием более простого пути. Откроем таблицу Фирмы (рис. 3.38).

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

Рис. 3.39

Открытая таблица Фирмы будет выглядеть так, как показано на рис. 3.40.

Рис. 3.40

В качестве примера открыто два фрагмента. При этом в таблице Страны созданная раньше подтаблица (рис. 3.35) осталась неизменной. Если необходимо одним щелчком развернуть все записи подтаблицы или свернуть все раскрытые записи, следует выбрать позицию Подтаблица в меню Формат (при открытой таблице Фирмы). Эта же позиция позволяет удалить подтаблицу.

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

Таким образом, создание подтаблиц в Access правильнее отнести не к новому типу связей, а скорее к новому типу их отображения.

Следующая глава >