В ряде случаев поле может включать лишь определенные значения, которые иногда содержатся в заранее заданном списке, а иногда – в самом поле, вместе с произвольно вводимыми данными. Бывают ситуации, когда ввод данных можно упростить и ускорить за счет использования подстановок – ввода понятий, уже содержащихся в определенных полях, например элементов списков. В качестве таких списков могут служить таблица, запрос в этой же или другой базе данных или список, созданный пользователем для многократного применения.
Рассмотрим создание подстановки на следующем примере. В сформированную перед этим таблицу (см. рис. 3.20) надо ввести новое поле Фирмы. Оно должно заполняться за счет подстановки значений из таблицы Фирмы, которая содержится в той же базе данных.
Для создания подстановок используется мастер подстановок. Запустить его можно:
• в режиме конструктора таблиц;
• в режиме таблицы.
Чтобы запустить мастер подстановок в режиме конструктора таблиц, сначала войдите в него. Затем щелкните по стрелке прокрутки в поле, которое вы хотите заполнить одним из значений (в нашем случае это поле Фирмы). В появившемся списке типов данных выберите мастер подстановок – рис. 3.21.
Рис. 3.21
В результате на экране возникнет первое окно мастера подстановок (см. рис. 3.22). Мастер создает столбец подстановок, то есть список значений, из которых надо выбрать подходящее. В этом окне следует указать, что нужно вывести на экран: список значений из таблицы или список запроса, который пользователь сам будет заполнять по своему усмотрению.
Рис. 3.22
Приняв решение, пользователь выбирает в диалоговом окне соответствующий переключатель, а затем щелкает по кнопке Далее.
Если был выбран первый вариант, мастер подстановок открывает следующее диалоговое окно (см. рис. 3.23). Здесь пользователь определяет таблицу и/или запрос, значениями которых он будет заполнять поле подстановки. Например, на рис. 3.23 показано, что эти значения выбираются из таблицы Фирмы. Теперь снова надо щелкнуть по кнопке Далее. Если вы передумали и хотите что-либо исправить в предыдущем окне, вернитесь к нему с помощью кнопки Назад или вообще отмените все предыдущие действия, щелкнув по кнопке Отмена.
Рис. 3.23
В следующем окне (см. рис. 3.24) вы должны определить объект-источник подстановки и указать те поля в этом объекте, из которых будут выбираться конкретные значения. Сначала пометьте их в левом поле с помощью кнопки с одной стрелкой, указывающей вправо (для каждого значения по отдельности), или с двумя стрелками (для всех сразу). Затем перенесите их в правое поле.
Рис. 3.24
Теперь повторите те же операции с кнопками, что и в предыдущем окне. Если вы выбрали Далее, то в следующем окне мастера подстановок (см. рис. 3.25) к вашим услугам появится столбец. В нем содержится перечень значений, из которых следует выбрать нужное (в нашем случае это названия фирм). В окне есть опция, рекомендующая скрыть ключевые поля (рекомендуется). Мы согласны с разработчиками Access и также советуем поставить в этом поле флажок.
Рис. 3.25
Если вас не устраивает ширина столбца и вы хотите ее изменить, мастер подстановок любезно порекомендует либо передвинуть мышью правую границу столбца, установив его желаемую ширину, либо дважды щелкнуть правой кнопкой мыши по заголовку столбца и задать его размер.
Теперь щелкните по кнопке Готово, и процесс будет завершен. На экране появится окно с предложением сохранить созданную таблицу сейчас или позже (рис. 3.26), а на следующем рисунке (см. рис. 3.27) – и сама таблица, где следует нажать на стрелку прокрутки. В результате в поле Фирмы появится столбец значений, в котором можно выбрать нужную строку. Если же щелкнуть по кнопке Далее, то в конечном счете вы выйдете к той же таблице, но через две промежуточных стадии (на рисунках они не представлены). На первом этапе следует назвать таблицу или согласиться с предлагаемым именем (мы уже знаем, что это всегда Таблица с каким-либо номером). На втором этапе Access поинтересуется, хотите ли вы перед выводом на экран итоговой таблицы запомнить исходную.
Рис. 3.26
Рис. 3.27
Сначала откройте в режиме просмотра таблицу, в которой надо создать поле подстановки. Для этого в окне базы данных либо воспользуйтесь кнопкой Открыть, либо дважды щелкните по имени нужной таблицы. В качестве исходной при этом рассматривается таблица, показанная на рис. 3.18. Затем в меню Вставка окна базы данных следует отметить пункт Столбец подстановок. В результате на экране появится уже знакомое диалоговое окно мастера подстановок (см. рис. 3.20). После этого дальнейшие операции выполняются так же, как и в предыдущем разделе. Все этапы данного процесса продемонстрированы на рис. 3.20-3.25.
Исходные таблицы в 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 правильнее отнести не к новому типу связей, а скорее к новому типу их отображения.
1. Формирование таблиц является первым этапом создания БД, так как таблицы в Access – это те первичные, исходные файлы, на основе которых в дальнейшем строится вся база данных. Access 2002 и предыдущие версии предоставляют пользователю несколько разных вариантов построения таблиц.
2. В настоящей главе рассматривались три варианта формирования таблиц: режим таблицы или режим ввода данных, режим конструктора и мастер таблиц. Еще два варианта создания таблиц – импорт таблиц и связь с таблицами – рассматриваются в том разделе главы 7, который посвящен объединению разнородных баз данных.
3. Наиболее детальным, гибким и основательным (и, соответственно, самым трудоемким) методом формирования таблиц является режим конструктора.
4. Для надежного контроля за файлами в Access предусмотрен механизм системных первичных кодов. Этот механизм очень полезен, и если у пользователя нет каких-то серьезных причин отказываться от введения первичных кодов, рекомендуется их всегда создавать.
5. Используемые в Access типы данных очень разнообразны, и для их эффективного применения следует перед выбором типа еще раз уточнить назначение этих данных при функционировании БД.
6. В Access 2002 предусмотрены два свойства полей: Формат и Маска ввода. Обе опции позволяют задавать формат, в котором данные вводятся или, точнее, запоминаются при вводе в таблицу.
Свойство Формат рекомендуется применять при последовательном вводе данных в таблицу.
Свойство Маска ввода целесообразно при отображении литеральных (символьных) констант, а также при вводе данных в пустые графы (бланки, таблицы и т. д.). При этом пользователю рекомендуется сформировать маску ввода вручную – это значительно проще.
7. Часто поле может включать лишь определенные значения, которые иногда содержатся в заранее заданном списке, а иногда – в самом поле, вместе с произвольно вводимыми данными. В этих случаях ввод данных можно упростить и ускорить за счет использования подстановок.
8. Для создания информационных структур можно использовать аппарат связей между таблицами, либо возможность организации вложенных подтаблиц, либо и то и другое вместе. Эти средства позволяют пользователю создавать достаточно сложные структуры данных.
Если таблицы служат первичными, исходными элементами базы данных, то «на выходе» вы получаете формы и отчеты. Как правило, формы используются для получения ответов на запросы пользователя, записи данных в таблицы и/или изменения этих данных при их вводе либо корректировке. Отдельное направление использования представляют собой сводные таблицы и сводные диаграммы, рассматриваемые в этой главе. Для распечатки, то есть для получения копии данных на твердом носителе, применяются отчеты.
В Access формы можно создавать разными способами:
• посредством автоформы;
• с помощью разных вариантов мастера форм;
• с помощью конструктора;
• с помощью сводной таблицы;
• с помощью диаграммы;
• с помощью запросов;
• путем расширения форм за счет включения в них диаграмм, картографических данных, рисунков.
В настоящей главе будут рассмотрены три первых способа: они позволяют строить формы, в которых значения величин, хранящихся в БД, остаются неизменными. (Изменение данных – выборочное или нет – требует создания запроса и относится уже скорее к области программирования.) Кроме того, благодаря использованию гиперссылок Access 2002 позволяет включать в формы картографические данные, рисунки и фрагменты текстовых файлов.
Таким способом можно создать форму, отображающую все поля и записи базовой таблицы или запроса. Запрос после выполнения может представлять собой таблицу, структура которой аналогична любой другой таблице и содержит поля и записи. Такая структура будет жесткой и однозначной, вплоть до того, что даже если таблица имеет подтаблицу, то последняя в создаваемой форме отражена не будет. Иначе говоря, форма будет создана строго в пределах одной базовой таблицы, и изменить ее пользователь не сможет. Таким образом, автоформа – самый легкий и наименее гибкий способ построения формы. Теперь посмотрим, как это делается.
В разделе Объекты окна базы данных щелкните сначала по кнопке
а затем по кнопке
На экране появится окно Новая форма – рис. 4.1. В этом окне надо выбрать следующие параметры:
Рис. 4.1
• способ построения формы (в данном случае – автоформа). Здесь возможны пять вариантов:
– В столбец;
– Ленточная;
– Табличная;
– Сводная таблица;
– Сводная диаграмма;
• таблицу или запрос, на основе которой/которого будет построена форма (в нашем случае выберите таблицу Фирмы).
Поскольку на рис. 4.1 выбрана автоформа В столбец, то, задав нужные параметры и щелкнув по кнопке ОК, вы получите созданную форму в виде столбца (см. рис. 4.2).
Рис. 4.2
Как вы помните, у таблицы Фирмы есть подчиненная таблица Менеджер (см. рис. 3.37). Между тем, как показано на рис. 4.2, при построении автоформы посредством диалогового окна Новая форма в готовой форме эта связь не отражена.
Рассмотрим другой вариант создания формы с помощью автоформы. Для этого в разделе Объекты окна базы данных нажмите кнопку
Теперь укажите базовую таблицу (пусть это опять будет таблица Фирмы) и выполните одно из предлагаемых действий:
• активизируйте опцию Автоформа в подменю Вставка на панели меню Access;
• щелкните по стрелке прокрутки возле кнопки
на панели инструментов Access, а затем опять активизируйте опцию Автоформа.
В обоих случаях результатом будет появление вложенной формы Фирмы, в которую включена дочерняя форма Менеджер. Последняя содержит запись, идентичную соответствующей строке из родительской формы Фирмы (см. рис. 4.3).
Рис. 4.3
Pulsuz fraqment bitdi.