- •Цель работы: изучение методов создание связей и объединений в запросах.
- •Работа в окне конструктора таблиц
- •Изменение размера верхней части окна конструктора запросов
- •Перемещение макетов таблиц
- •Просмотр имен таблиц
- •Ограничения в многотабличных запросах
- •Ограничения, накладываемые на обновление записей
- •Советы по созданию обновляемых полей в запросах
- •Связывание таблиц
- •Удаление связей
- •Типы связей между таблицами
- •Внутренние объединения
- •Изменение свойств связи
- •Создание левого внешнего объединения
Советы по созданию обновляемых полей в запросах
• Если вы хотите использовать в формах средства автоподстановки, убедитесь, что в форму включено поле связи из таблицы многие, а не из таблицы один. Для отображения этого поля используйте обычный список или поле со списком.
• Если вы хотите добавить записи в обе таблицы со связью один-ко-многим, убедитесь, что в форму включено поле связи из таблицы многие и оно отображено в таблице данных. После этого можете добавлять записи, начиная с любой таблицы. Поле связи из таблицы один будет автоматически скопировано в поле связи таблицы многие.
• Если вы хотите запретить обновление любого поля, задайте для свойства формы Разрешить изменение значение Нет.
• Если вы хотите запретить обновление некоторых полей в форме, задайте значение Да для свойства Блокировка элемента управления этих полей.
• Если вы хотите добавить в форму записи из нескольких таблиц, не забудьте включить все (или большинство) полей из этих таблиц. Иначе запись в форме будет неполной.
Временное отсутствие обновления в связи один-ко-многим
При обновлении записей со стороны один в запросе типа один-ко-многим вы не сможете изменить поле связи со стороны многие, пока не сохраните изменения со стороны один. Быстро сохранить изменения со стороны один можно, нажав комбинацию клавиш <Shift+Епteг> или выбрав команду ФайлСохранить. Как только изменения со стороны один будут сохранены, можно изменять поле связи со стороны многие.
Создание связей в запросах
Связи между таблицами можно создать следующими тремя способами.
• Установить связи между таблицами при создании макета базы данных. Для этого воспользуйтесь командой СервисСхема данных из меню окна базы данных или щелкните на кнопке Схема данных, которая расположена на панели инструментов.
• Выбрать для запроса две таблицы с полями одного типа с одним именем, которое также является ключевым полем в одной из этих таблиц.
• Создать связи в окне конструктора запроса.
Первые два способа создают связи автоматически. Так, при добавлении связанных таблиц в запрос Ассевк автоматически отображает линии связи, которые были заданы при конструировании таблиц. Она также создает автоматическую связь между двумя таблицами, имеющими общее поле, при условии, что это поле является ключевым в одной из таблиц. Однако иногда необходимо добавить в запрос несвязанные таблицы, как в следующих примерах.
• Две таблицы имеют общее поле, названное разными именами.
• Таблица не связана (и не может быть связана) с другой таблицей (например, таблица Customer не может быть связана с таблицей Тгеаtments).
Связать две таблицы, которые не были автоматически связаны, можно в окне конструктора запроса. Объединение таблиц в окне конструктора запроса не приводит к созданию постоянной связи между этими таблицами. Такая связь будет функционировать только в запросе, над которым вы работаете.
Все таблицы в запросе должны быть связаны хотя бы с одной таблицей. Если, к примеру, вы поместите в запрос две таблицы и не объедините их, Ассеаз создаст запрос на основе декартового произведения (известного также как перекрестное произведение) этих двух таблиц. Декартово произведение означает следующее. Если в одной таблице есть пять записей, а в другой — шесть, то в результирующем запросе будет тридцать (5х6) записей, которые для вас, вероятно, будут бесполезны.
