Советы по созданию обновляемых полей в запросах — КиберПедия 

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

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

2021-06-30 29
Советы по созданию обновляемых полей в запросах 0.00 из 5.00 0 оценок
Заказать работу

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

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

• Если вы хотите запретить обновление любого поля, задайте для свойства формы Разрешить изменение значение Нет.

• Если вы хотите запретить обновление некоторых полей в форме, задайте значение Да для свойства Блокировка элемента управления этих полей.

• Если вы хотите добавить в форму записи из нескольких таблиц, не забудьте включить все (или большинство) по­лей из этих таблиц. Иначе запись в форме будет неполной.

Временное отсутствие обновления в связи один-ко-многим

При обновлении записей со стороны один в запросе типа один-ко-многим вы не сможете изменить поле связи со сто­роны многие, пока не сохраните изменения со стороны один. Быстро сохранить изменения со стороны один можно, нажав комбинацию клавиш < Shift +Еп te г > или выбрав команду Файл Þ Сохранить. Как только изменения со стороны один будут сохранены, можно изменять поле связи со стороны многие.

Создание связей в запросах

Связи между таблицами можно создать следующими тремя способами.

• Установить связи между таблицами при создании макета базы данных. Для этого воспользуйтесь командой Сервис Þ Схема данных из меню окна базы данных или щелкните на кнопке Схема данных, которая расположена на панели инструментов.

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

• Создать связи в окне конструктора запроса.

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

• Две таблицы имеют общее поле, названное разными именами.

• Таблица не связана (и не может быть связана) с другой таблицей (например, таблица Customer не может быть связана с таблицей Тгеаtments).

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

Все таблицы в запросе должны быть связаны хотя бы с одной таблицей. Если, к примеру, вы поместите в запрос две таблицы и не объедините их, Ассеаз создаст запрос на основе декартового произведения (известного также как перекрестное произведение ) этих двух таблиц. Декартово произведение означает следующее. Если в одной таблице есть пять записей, а в другой — шесть, то в результирующем запросе будет тридцать (5х6) записей, которые для вас, вероятно, будут бесполезны.

Связывание таблиц

На рис.8 показаны связанные таблицы Pet и Customer. Таблицы в запросе не будут связываться автоматически, если они не связаны на уровне таблиц, не имеют общего поля с одним именем для первичного ключа или если снят флажок Автоматическое объединение.

Рис.8. Объединение таблиц в конструкторе запросов

Чтобы связать таблицы Pets и Customer, выполните следующие действия.

1. Находясь в верхней части окна конструктора запросов, выберите поле Customer Number таблицы Customer.

2. Перетащите выделенное поле в таблицу Pets (при перетаскивании указатель мыши примет вид пиктограммы Поле).

3. Опустите пиктограмму Поле на поле Customer Number таблицы Pets.

На рис.8 показан процесс связывания таблиц. Сначала пиктограмма Поле появится в поле Customer Number таблицы Customer. Перетащите ее в таблицу Pets. При этом указатель мыши примет вид перечеркнутой окружности. Это означает, что в области между таблицами кнопку мыши отпускать нельзя. В поле Customer Number курсор примет свой прежний вид, указывая, что кнопку мыши можно отпустить. После того как вы отпустите кнопку мыши, появится линия связи.

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

Удаление связей

Для удаления определенной линии связи между двумя таблицами выберите эту линию и нажмите клавишу < D е1е1е >. Чтобы выделить линию связи, щелкните на ней. Например, создайте новый запрос, добавив таблицы Customer и Pets, а затем удалите линию связи между ними, выполнив следующие действия.

1. Выберите линию связи между полями Customer Number в таблицах Pets и Custome г, поместив указатель мыши на линию связи и щелкнув на ней левой кнопкой мыши.

2. После выделения линии связи нажмите клавишу < D е1е1е >, и линия исчезнет.

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

Связь также можно удалить, выделив нужную линию и выполнив команду Правка Þ Удалить.

Помните, что, если вы удалили связь между таблицами и эти таблицы остались в окне конструктора запроса, не имея связей с другими таблицами, результаты выборки данных будут весьма неожиданными. Дело в том, что Асcеss создаст декартово произведение для этих двух таблиц, которое будет действительно только для текущего запроса, а связь останется незатронутой.

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

Типы связей между таблицами

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

• Один-к-одному

• Один-ко-многим

• Многие-к-одному

• Многие-ко-многим

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

Для просмотра данных в двух таблицах следует объединить их общим полем (или группой полей) в обеих таблицах. Такой метод связывания таблиц называется объединением (joining ). В запросах таблицы с установленными связями соединены линиями. Внутри запроса можно создать новые связи или изменить существующие. Ниже вы узнаете о следующих типах объединений.

• Внутренние объединения

• Внешние объединения

• Самообъединения

• Перекрестные (декартовы) объединения

Внутренние объединения

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

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

Например, вспомним таблицы Customer и Pets. Имейте в виду, что вы ищете все записи из этих таблиц, у которых совпадают поля. Поля Customer Number являются общими для обеих таблиц. Поэтому в результате равного объединения не будут выбраны записи, относящиеся к клиентам, которые не имеют домашних животных, а также записи, относящиеся к домашним животным, которые не имеют реального номера клиента. Правила целостности данных позволяют отсеять записи о тех домашних животных, которые не связаны с номером клиента. Можно, конечно, удалить все записи о домашних животных конкретного клиента или создать запись для нового клиента, в которой не будет записей о домашних животных. Однако всякое домашнее животное всегда должно иметь реального клиента — владельца. Таким образом, условия целостности данных предохраняют поле Customer Number от удаления или изменения, если оно связано с каким-нибудь домашним животным.

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

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

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

Изменение свойств связи

При объединении таблиц Customer и Pets в них появляются некоторые особенности (или свойства связи). Свойство связи это правило, которое управляет отображением всех записей (для заданных полей), соответствующих символам поля Customer Number таблицы Customer и поля Customer Number таблицы Pets.

Для разъяснения этого правила рассмотрим, что происходит в таблицах Customer и Pets..

• Если в таблице Customer есть запись с номером клиента, который не обнаружен в таблице Customer, то эта запись таблицы Customer не будет показана.

• Если в таблице Pets есть запись с номером клиента, который не обнаружен в таблице Customer, то эта запись таблицы Pets не будет показана.

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

Свойство связи — это правило, которому следует Ассеss при интерпретации любых исключений (а возможно и ошибок) в таблицах (например, должны ли отображаться записи без подчиненных записей).

Ассеss имеет несколько типов объединения с собственными характеристиками. Программа позволяет быстро изменять тип объединения путем изменения его свойств. Для изменения свойств объединения выберите линию связи и дважды щелкните на ней левой кнопкой мыши. На экране появится диалоговое окно Параметры объединения. Диалоговое окно, показанное на рис.9, является результатом выбора линии связи между таблицами Customer и Pets.

В диалоговом окне Параметры объединения есть три переключателя, которые для таблиц Customer и Pets предстают в следующем виде.

1. Объединение только тех записей, в которых связанные поля обеих таблиц совпадают.

2. Объединение всех записей из  Customer и только тех записей из Pets,в которых связанные поля совпадают,

3. Объединение всех записей из Pets и только тех записей из  Customer, в которых связанные поля совпадают.

 

 

Рис.9. Диалоговое окно Параметры объединения

Первый вариант обычно называют внутренним объединением, а два следующих— внешними. Эти объединения управляют Асееss при построении динамического набора данных текущего запроса.


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.04 с.