Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_лекции_Саладаев.doc
Скачиваний:
55
Добавлен:
03.05.2015
Размер:
15.75 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возможность редактирования

Одна таблица

да

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

да

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

как правило

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

нет

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

нет

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

нет

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

нет

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

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

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

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

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

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

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

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