Имя материала: Access97 - шаг за шагом

Урок 5. обеспечение достоверности информации в базе данных

 

Вы научитесь:

задавать условие проверки для элемента управления;

создавать элемент управления «поле со списком»;

изменять порядок перехода по элементам управления в форме;

задавать значение по умолчанию для элемента управления;

устанавливать обязательное заполнение поля;

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

использовать поле подстановок для точного ввода данных;

распознавать отношение многие-ко-многим и использовать связующую таблицу.

 

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

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

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

В этом уроке вы узнаете, как расширить возможности контроля данных с помощью элементов управления формы, рассмотренных в уроке 2 «Использование форм для эффективной работы с данными». Вы также научитесь учитывать взаимосвязи таблиц, описанные в уроке 4 «Расширение баз данных», и узнаете, как строить таблицы, чтобы обеспечить их правильное взаимодействие.

 

Начало урока

 

Запустите программу Microsoft Access, если она еще не загружена. Откройте базу данных Сластена Лили. Разверните окно базы данных до размеров полного экрана.

За дополнительной информацией об открытии базы данных обратитесь к уроку 1.

 

Можно также открыть базу данных за один шаг. Щелкните на кнопке Пуск (Start), укажите на пункт Документы (Documents) и затем щелкните на Сластена Лили.

 

Контроль данных через элементы управления форм

 

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

За дополнительной информацией по разработке форм обратитесь к уроку 10 «Совершенствование ввода данных».

 

Как задать условие проверки данных при вводе

 

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

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

1. В окне базы данных щелкните на вкладке Формы (Forms). Вкладка переместится на первый план.

2. Выделите форму Заказы и щелкните на кнопке Конструктор (Design).

Форма Заказы откроется в режиме Конструктор (Design view) и будет выглядеть, как показано на следующем рисунке.

 

3. Выделите поле Дата оплаты.

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

5. В разделе Область данных (Details) выделите поле Дата оплаты, щелкнув на нем, и затем щелкните на вкладке Данные (Data) в окне свойств.

6. Щелкните в поле свойства Условие на значение (Validation Rule), введите >=Date() и нажмите клавишу Enter.

Это правило контроля означает, что дата оплаты должна быть равна или позже текущей даты (даты заказа). Функция Date() возвращает текущую дату.

7. Щелкните в поле свойства Сообщение об ошибке (Validation Text), чтобы поместить в него курсор и введите:

Недопустимое значение даты! Дата оплаты должна быть не ранее текущей.

8. Нажмите клавишу Enter.

9.Закройте окно свойств.

 

Проверьте действие нового условия

 

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

1. Щелкните на стрелке кнопки Вид (View) и выберите Режим формы (Form View).

2. Щелкните на кнопке Новая запись (New Record), чтобы ввести новую запись. Запись 408 станет текущей.

3. Щелкните в поле Дата оплаты, чтобы поместить в него курсор, введите 1-янв-95 и затем нажмите клавишу Enter. Появится сообщение об ошибке с заданным вам текстом.

4. Щелкните на кнопке ОК, измените дату на любую после текущей и нажмите клавишу Tab. Теперь дата соответствует заданному условию и будет введена в поле.

5. Щелкните на кнопке Сохранить (Save), чтобы сохранить новую версию формы, и затем закройте форму.

Появится сообщение о том, что в таблице Заказчики не найдены записи с совпадающим ключевым полем Код заказчика, так как вы не заполнили это поле.

6. Щелкните на кнопке ОК.

На экране появится сообщение о том, что выполненные изменения будут потеряны. Это встроенный в Access контроль, запрещающий ввод данных, у которых не заполнены ключевые поля.

7. Щелкните на кнопке Да (Yes).

 

Как создать поле со списком значений данных

 

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

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

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

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

 

Совет. Если вы хотите заменить текстовое поле на надпись, список или комбинированное поле (поле со списком), щелкните на том элементе управления, который собираетесь изменить. Затем в меню Формат (Format) щелкните на команде Преобразовать Ч элемент в (Change to) и щелкните на нужном типе элемента управления в открывшемся списке.

 

Удалите текстовое поле

 

Прежде чем добавить поле со списком, нужно освободить для него место, удалив поле Код заказчика и его надпись.

1. В окне базы данных щелкните на вкладке Формы (Forms), выделите форму Заказы и затем щелкните на кнопке Конструктор (Design), чтобы открыть форму в режиме конструктора.

2. Если размер окна формы не позволяет видеть все ее элементы управления, увеличьте его, протащив угол окна в нужном направлении.

3. Щелкните на поле Код заказчика и затем нажмите клавишу Delete.

Поле вместе с надписью будет удалено из формы. Если панель ' элементов закрывает обзор формы, щелкните на заголовке панели и перетащите ее в другое место экрана. Можно вообще убрать панель с поверхности формы, если дважды щелкнуть на ее заголовке.

 

Создайте присоединенный элемент управления «поле со списком»

 

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

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

1. Убедитесь, что на экран выведена панель элементов и список полей. В противном случае щелкните на кнопке Панель элементе (Toolbox) или кнопке Список полей (Field List) на панели инструментов Конструктор форм (Form Design).

2. Убедитесь, что кнопка Мастер (Control Wizards) нажата на панели элементов.

3. На панели элементов щелкните на элементе Поле со списком (Combo Box).

Теперь, если вы перетащите поле Код заказчика из списка полей в форму, Microsoft Access создаст привязанное к нему комбинированное поле.

4. Перетащите поле Код заказчика из списка полей в позицию над полем формы Имя.

После того, как вы отпустите кнопку мыши, откроется первый диалог мастера.

 

Создайте список для поля

 

Следуйте далее указаниям Мастера для создания поля со списком.

1. В первом диалоговом окне мастера Создание полей со списком (Combo Box Wizard) убедитесь, что выбран вариант Поле со списком использует значения из таблицы или запроса (I Want The Combo Box To Look Up The Values In A Table Or Query). Затем щелкните на кнопке Далее (Next).

2. В области Показать (View) щелкните на варианте Запросы (Queries) и выделите в появившемся списке запрос Список заказчиков. Щелкните на кнопке Далее (Next).

3. В списке Доступные поля (Available Fields) поочередно дважды щелкните на наименованиях полей Код заказчика, Имя и Фамилия. Щелкните на кнопке Далее (Next).

Эти поля будут столбцами списка.

4. Щелкните дважды на правых границах заголовка каждого столбца, чтобы подогнать ширину колонок под размер данных. Щелкните на кнопке Далее (Next).

5. Выделите Код заказчика в качестве столбца, содержащего данные, которые надо сохранить в таблице. Щелкните на кнопке Далее (Next).

6. Убедитесь, что активизирован вариант Сохранить в поле (Store That Value In This Field), а поле справа от него содержит значение «Код заказчика». Щелкните на кнопке Далее (Next).

7. Текст «Код заказчика» предлагается по умолчанию в качестве надписи поля со списком. Если эта надпись вас устраивает, щелкните на кнопке Готово (Finish).

Теперь форма содержит поле со списком, присоединенное к полю Код заказчика. Форма будет выглядеть, как показано на следующем рисунке.

8. Закройте список полей

 

Поработайте с полем со списком

 

Попробуйте воспользоваться полем со списком, чтобы убедиться, насколько упростился ввод данных. Теперь при заполнении формы Заказы нет необходимости искать код заказчика. Достаточно выбрать нужное имя из списка, и произойдет автоматическое заполнение полей кода, имени и адреса заказчика.

1. Щелкните на стрелке кнопки Вид (View) и затем щелкните на пункте Режим формы (Form View), чтобы переключиться в режим формы.

2. Щелкните на кнопке со стрелкой в правой части поля Код заказчика и выберите нужное имя из открывшегося списка.

В поле Код заказчика появится значение кода заказчика.

 

Как изменить последовательность перехода

 

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

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

 

Измените последовательность перехода

 

Если открыть форму Заказы в режиме формы, поле Дата заказа является первым выделенным полем, куда можно вводить данные. Измените последовательность перехода в форме так, чтобы при ее открытии выделенным оказывалось поле Код заказчика.

Создавая новый элемент управления, Microsoft Access ставит его в конец последовательности перехода независимо от того, куда вы поместили его в форме. Отредактируйте порядок перехода, чтобы созданное вами комбинированное поле Код заказчика оказалось первым, а не последним.

1. Щелкните на стрелке кнопки Вид (View) и затем щелкните на режиме Конструктор (Design View).

2. Если поле Код заказчика не выделено, выделите его, щелкнув на нем мышью.

3. Щелкните на команде Последовательность перехода (Tab Order) в меню Вид (View). Появится диалоговое окно Последовательность перехода (Tab Order).

4. Прокрутите список в окне Последовательность (Order) до появления в нем пункта Код заказчика.

5. Поместите указатель мыши в столбец слева от имени элемента управления Код заказчика. Когда указатель примет форму направленной вправо стрелки, щелкните, чтобы выделить поле.

6. Щелкните и, не отпуская кнопку мыши, перетащите элемент Код заказчика в начало списка.

7. Щелкните на кнопке ОК

8. Переключитесь в Режим формы (Form View) и проверьте, как работает последовательность перехода.

Откроется форма Заказы. Поле Код заказчика выделено.

9. Сохраните форму Заказы.

 

Как присвоить управляющему элементу значение по умолчанию

 

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

 

Задайте отображение в попе текущей даты

 

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

1. Щелкните на стрелке кнопки Вид (View) и затем щелкните на пункте Конструктор (Design View).

2. Щелкните в поле Дата заказа, чтобы выделить его. Если окно свойств отсутствует на экране, на панели инструментов щелкните на кнопке Свойства (Properties), чтобы вывести свойства элемента управления Дата заказа.

3. На вкладке Данные (Data) для свойства Значение по умолчанию (Default Value) задайте выражение: =Date().

4. Закройте окно свойств.

5. Переключитесь в Режим формы (Form View). Поскольку Microsoft Access задает начальное значение только для новых записей, для проверки свойства вам понадобится новая запись.

6. Щелкните на кнопке перехода Новая запись (New Record) внизу ;

формы, чтобы перейти к новой пустой записи.

Появится новая запись. В поле Дата заказа задано сегодняшнее число.

7. Закройте форму. В ответ на запрос, хотите ли вы сохранить изменения, щелкните на кнопке Да (Yes).

 

Использование свойств полей для контроля ввода данных

 

Кроме свойств элементов управления, в вашем распоряжении есть и другие средства, позволяющие контролировать ввод информации. Можно задать свойства полям в таблице. Преимущество этого способа состоит в том, что он влияет на все формы, включающие данное поле. Например, условие на значение, установленное вами для элемента управления Дата оплаты в форме Заказы, можно было задать для поля таблицы. Тогда это правило распространялось бы на все элементы управления, созданные на основе этого поля.

 

Задайте свойство Обязательное поле

 

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

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

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

1. В окне базы данных щелкните на вкладке Таблицы (Tables).

2. Выделите таблицу Заказы, щелкнув на ней, и затем щелкните на кнопке Конструктор (Design), чтобы открыть таблицу в режиме конструктора.

3. Выделите поле Почтовый индекс получателя, щелкнув на нем.

4. В области Свойства поля (Field Properties) щелкните на свойстве Обязательное поле (Required). Щелкните затем на стрелке в поле свойства и выберите из списка значение Да;

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

5. Закройте таблицу Заказы. Появится сообщение с запросом, хотите ли вы сохранить изменения.

6. Щелкните на кнопке Да (Yes).

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

7. Щелкните на кнопке Да (Yes).

Если обнаружены записи, нарушающие правило, появится сообщение с предупреждением.

 

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

 

Проверьте действие свойства

 

Чтобы убедиться, что свойство Обязательное поле задано, попробуйте ввести заказ, не заполняя поле Почтовый индекс получателя.

1. В окне базы данных щелкните на вкладке Формы (Forms) и затем дважды щелкните на форме Заказы, чтобы открыть ее в режиме формы. В форме будет выделено поле Код заказчика.

2. С помощью кнопки перехода Новая запись (New Record) начните ввод новой записи.

3. Выберите любого заказчика из списка в поле Код заказчика.

4. Нажмите клавишу Tab для перехода в поле Дата заказа, где уже задано значение по умолчанию, и нажмите клавишу Tab еще раз, чтобы подтвердить ввод этого значения. Курсор переместиться в поле Код заказа.

5. Введите 417 для кода заказа.

6. Нажмите клавишу Tab три раза для перехода в первое пустое поле в области Отправить. Заполните поля Имя, Фамилия, Адpec, Город, Штат/Провинция получателя любыми данными, перемещаясь по полям с помощью клавиши Tab.

7. Оставьте пустым поле Почтовый индекс получателя. Нажмите 1 клавишу Tab для перехода в поле Страна получателя и заполните его.

8. Заполните остальные поля главной формы.

9. Щелкните в первом поле подчиненной формы, чтобы ввести код набора.

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

10. Щелкните на кнопке ОК, введите 32123 в поле Почтовый индекс получателя и завершите ввод значения для Кода набора.

11. Закройте форму Заказы.

 

Контроль информации путем обеспечения целостности данных

 

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

Целостность базы данных достигается при выполнении ряда условий. Во-первых, поля совпадения в главной таблице должны быть ключевыми или входить в составной ключ. Во-вторых, они должны иметь одинаковый тип данных. И, наконец, обе таблицы должны входить в одну базу данных. Целостность данных возможна, только если связанные таблицы имеют формат Microsoft Access. To есть, понятие целостности не распространяется на базы данных, содержащие связанные таблицы в формате Microsoft Exel, Paradox, dBase и другие.

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

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

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

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

 

Задайте целостность данных

 

Одно из очевидных правил работы с заказами состоит в том, что нельзя | удалить из базы заказчика, заказы которого не выполнены. Это приведет | к нарушению целостности данных. Можно обеспечить выполнение этого | правила, если установить связь между таблицами Заказчики и Заказы.    |

1. В окне базы данных щелкните на вкладке Таблицы (Tables).

2. На панели инструментов щелкните на кнопке Схема данных (Relationships), чтобы открыть одноименное окно.

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

3. Щелкните на кнопке Отобразить все связи (All Relationships), чтобы вывести в окне все связи в базе данных.

4. Разверните окно до размера полного экрана.

5. Дважды щелкните на линии, соединяющей таблицы Заказчики и Заказы. Появится диалоговое окно Связи (Relationships).

6. Пометьте флажком вариант Обеспечение целостности данных (Enforce Referential Integrity).

7. Щелкните на кнопке Объединение (Join Type).

Появится диалоговое окно Параметры объединения (Join Properties), в котором можно задать тип отношений. В данном случае выберите вариант объединения только тех связей, у которых совпадают связанные поля обеих таблиц. Этот вариант предлагается по умолчанию.

8. Щелкните на кнопке ОК, чтобы закрыть диалоговое окно Параметры объединения (Join Properties).

9. Щелкните на кнопке ОК, чтобы закрыть диалоговое окно Связи (Relationships).

 

Каскадное обновление и удаление

 

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

 

Примечание. Если ключ в главной таблице имеет тип Счетчик    (Auto Number), то нет смысла задавать каскадное обновление, так как нельзя изменить значение в поле типа Счетчик.

 

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

 

Задайте согласование ключей с помощью параметра «каскадное обновление»

 

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

1. В окне Схема данных (Relationships) щелкните на линии, соединяющей таблицы Наборы и Подробности наборов, чтобы выделить ее. Линия станет толще.

2. Щелкните дважды на линии. Появится диалоговое окно Связи (Relationships).

3. Убедитесь что вариант Обеспечение целостности данных (Enforce Referential Integrity) помечен флажком. Щелкните на варианте каскадное обновление связанных полей (Cascade Update Related Fields), чтобы установить в нем флажок.

4. Щелкните на кнопке ОК.

Диалоговое окно Связи (Relationships) закроется. Таблица Наборы помечена цифрой 1, указывающей, что это сторона «один» отношения один ко многим. Рядом с таблицей Подробности наборов

находится значок бесконечности, указывающий, что это сторона отношения «многие».

5. Повторите шаги 1-4 для установления отношения между таблицами Наборы и Подробности заказов.

 

Установите параметр каскадного удаления записей

 

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

1. В окне Схема данных (Relationships) щелкните дважды на линии, соединяющей таблицы Заказы и Заказчики. Появится диалоговое окно Связи (Relationships).

2. В диалоговом окне Связи (Relationships) щелкните мышью на варианте каскадное удаление связанных полей (Cascade Delete Related Fields), чтобы установить в нем флажок. Предварительно установите флажок на варианте Обеспечение целостности данных (Enforce Referential Integrity), если его там нет.

Теперь удаление записей в главной таблице Заказчики распространится на связанную таблицу Заказы.

3. Щелкните на кнопке ОК.

4. Закройте диалоговое окно Схема данных (Relationships) и щелкните на кнопке Да (Yes), чтобы подтвердить сохранение изменений в окне.

5. Щелкните на кнопке Восстановить (Restore) в окне базы данных, чтобы вернуться к прежнему размеру окна. Мы его развернули до полного экрана, начав работать с окном схемы данных.

 

Посмотрите, как работает каскадное удаление

 

1. В окне базы данных дважды щелкните на таблице Заказчики, чтобы открыть ее.

2. Выделите запись со значением 5 в поле Код заказчика.

3. На панели инструментов щелкните на кнопке Удалить запись (Delete Record). Появится сообщение о том, что предполагается удаление связанных записей.

4. Щелкните на кнопке Нет (No), чтобы продолжить работу. Закройте таблицу Заказчики.

Использование полей подстановок для точного ввода данных

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

 

Создайте поле подстановки

 

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

1. В окне базы данных щелкните на вкладке Таблицы (Tables) и затем дважды щелкните на таблице Доставка.

При создании поля подстановок нужно ввести список допустимых значений.

2. Щелкните на команде Столбец подстановок (Lookup Column) в меню Вставка (Insert).

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

3. Щелкните на кнопке Далее (Next). Мастер запрашивает, сколько столбцов должно быть в поле подстановки. Оставьте значение, принятое по умолчанию.

4. Щелкните на ячейке под заголовком Столбец 1 и введите Внутренние. Нажмите клавишу | Tab |. Курсор переместится в новую пустую ячейку.

5. Добавьте значения Международные и Любые и щелкните на кнопке Далее (Next). Мастер запрашивает заголовок для столбца подстановок.

6. Введите Маршрут и щелкните на кнопке Готово (Finish). Щел книге на стрелке в поле Маршрут.

На экране в режиме таблицы появится таблица Доставка, в ка торую включен столбец подстановок. Теперь, чтобы ввести знй чение, достаточно щелкнуть на стрелке вниз и выбрать знач@| ние из списка. Более того, в любой форме, созданной на баз| этой таблицы, для поля Маршрут автоматически будет создав! поле со списком.

Экран будет выглядеть как на следующем рисунке.

 

7. Выберите значение «Внутренние» для первой записи, значение! «Международные» - для второй и значение «Внутренние» - для третьей.

8. Закройте таблицу Доставка и щелкните на кнопке Да (Yes), чтобы сохранить изменения.

 

Отношение многие-ко-многим

 

Отношения один-к-одному и один-ко-лъногим рассмотрены в уроке 4: «Расширение базы данных»

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

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

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

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

 

Примечание. Если вы хотите получить дополнительные навыки по теме данного урока, выполните упражнения в разделе «Шаг вперед». В противном случае переходите к разделу «Окончание урока».

 

Шаг вперед: связующие таблицы

 

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

 

Посмотрите на схеме связи связующей таблицы

 

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

1. В окне базы данных щелкните на вкладке Таблицы (Tables). Затем щелкните на кнопке Схема данных (Relationships) панели инструментов.

2. На панели инструментов щелкните на кнопке Очистить макет (Clear Layout) и затем щелкните на кнопке Да (Yes).

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

3. Щелкните на кнопке Добавить таблицу (Show Table) панели инструментов. Появится диалоговое окно Добавление таблицы (Show Table).

4. Добавьте таблицы Конфеты, Подробности наборов и Наборы в окно Схема данных (Relationships).

5. Закройте окно Добавление таблицы (Show Table). Вы увидите связи между таблицами.

6. Щелкните на команде Сохранить (Save) в меню Файл (File).

7. Закройте окно Схема данных (Relationships).

 

Окончание урока

 

1. Чтобы перейти к следующему уроку, щелкните на команде Закрыть (Close) в меню Файл(П1е).

2. Если вы завершили работу с программой Microsoft Access, щелкните на команде Выйти (Exit) в меню Файл (File).

 

Краткое содержание урока

 

Чтобы

Сделайте следующее

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

Откройте форму в режиме Конструктора (Design view). Выделите элемент управления, затем щелкните на кнопке Свойства (Properties), чтобы открыть окно свойств.

Создать условие на значение для элемента управления формы

Введите выражение в поле свойства Условие на значение (Validation Rule) в окне свойств.

Создать элемент управления поле со списком

Откройте форму в режиме Конструктора (Design view). Выделите элемент Поле со списком (Combo Box) на панели элементов. Перетащите поле из списка полей в нужное место формы, чтобы запустить Мастер создания поля со списком (Combo Box Wizard).

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

Откройте форму в режиме Конструктора (Design view). Выделите элемент управления и воспользуйтесь командой Последовательность перехода (Tab Order) в меню Вид (View), чтобы изменить порядок перемещения по полям формы.

Установить для поля значение по умолчанию

Откройте форму в режиме Конструктора (Design view). Выделите поле, щелкнув на Имени поля (Field Name). В области Свойства поля (Field Properties) для свойства Значение по умолчанию (Default Values) введите значение, которое будет присваиваться полю для всех новых записей, добавляемых после этого в таблицу.

Создать поле, заполнение которого обязательно

Откройте форму в режиме Конструктора (Design view). Выделите поле, щелкнув на Имени поля (Field Name). В области Свойства поля (Field Properties) щелкните на свойстве Обязательное поле (Required) и выберите Да (Yes) из списка.

Обеспечить целостность данных

В окне базы данных щелкните на кнопке Схема данных (Relationships). Выполните двойной щелчок на линии, связывающей две таблицы. Пометьте флажком вариант Обеспечение целостности данных (Enforce Referential Integrity).

Задать каскадное обновление связанных записей

В окне базы данных щелкните на кнопке Схема данных (Relationships). Выполните двойной щелчок на линии, связывающей две таблицы. Пометьте флажком варианты Обеспечение целостности данных (Enforce Referential Integrity) и каскадное обновление связанных полей (Cascade Update Related Fields).

Задать каскадное удаление связанных записей

В окне базы данных щелкните на кнопке Схема данных (Relationships). Выполните двойной щелчок на линии, связывающей две таблицы. Пометьте флажком варианты Обеспечение целостности данных (Enforce Referential Integrity) и каскадное удаление связанных полей (Cascade Delete Related Fields).

Создать поле подстановки

Откройте таблицу в режиме таблицы. Щелкните на команде Столбец подстановок (Lookup Columns) в меню Вставка (Insert), чтобы запустить Мастер подстановок (Lookup Wizard). Выберите значения из таблицы, запроса или введите их. Следуйте указаниям мастера и щелкните на кнопке Готово (Finish), когда закончите.

 

Для получения справки о том, как

Воспользуйтесь Помощником для поиска тем

Создать условие на значение

Создание условия на значение для элемента управления.

Задать значения по умолчанию

Определение значения, используемого по умолчанию.

Изменить последовательность перехода

Изменение порядка перехода в форме

Обеспечить целостность

данных

Что означает целостность данных

Задать каскадное обновление или удаление

Режимы каскадного обновления, каскадного удаления

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

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

 

Страница: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |