Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BBD_Shpory.doc
Скачиваний:
11
Добавлен:
26.09.2019
Размер:
13.1 Mб
Скачать

20. Создание связей и объединений в запросах. Ограничения в многотабличных запросах.

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

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

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

- в обеих таблицах есть поля с одинаковыми именами;

- поля с одинаковыми именами имеют один и тот же тип;

- в одной из таблиц такое поле является первичным ключом.

Свойство автообъединения может быть отключено в глобальных параметрах Сервис  Параметры. Наименее интуитивно понятно перемена местоположения столбца в таблице. Вторая особенность, требующая пояснений - символ * в верхней части окна таблицы.

Он также как и везде означает групповую операцию (*- представитель группы). Сразу все поля можно перетащить в запрос.

Ограничения в многотабличных запросах

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

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

Существуют следующие правила редактирования для запросов:

Тип запроса или поля

Возможность

редактирования

Одна таблица

да

Отношение один к одному

да

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

как правило

Перекрестный запрос

нет

Обобщающие запросы Sum и

т.п.

нет

Рассчитываемые поля

нет

Поля, заблокированные другим

пользователем

нет

Редактирование полей справочников

Иногда возникает необходимость изменить поля связи в обеих таблицах. При этом создается новое значение первичного ключа (со стороны «один»), а со стороны «многие» происходит каскадное обновление связанных полей, для чего для данной связи должна быть включена «Целостность данных» и «Каскадное обновление». При отборе полей для запроса возникает вопрос, какое поле брать из связанных.

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

• Предпочтительнее включать в запрос поле связи из таблицы со стороны «многие», а не со стороны «один».

• Для обеспечения добавления записей в обе таблицы со связью «один ко многим» в запрос следует включить поле связи со стороны многие.

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

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

• Изменив в запросе записи, находящиеся в таблице со стороны «один» нельзя вносить изменения в таблице со стороны «многие» до тех пор, пока внесенные изменения не будут сохранены.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]