Запросы, вносящие изменения.

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

 
 

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

· для удаления из таблицы или группы таблиц указанных записей;

· для добавления записей из одной таблицы в другую;

· для обновления информации в группе записей;

· для создания новой таблицы из записей, указанных в запросе.

Типичное применение запросов на удаление- удаление давно не используемых записей или записей, устаревших по какому-либо критерию.

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

Специфика:

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

Один из приемов- сначала сделать запрос на выборку и предоставить возможность просмотра результата, затем сделать такой же запрос, но преобразовать его в запрос на обновление (или другое изменение). Для преобразования запроса используется команда Запрос ® Обновление. При этом изменится заголовок запроса (слово «выборка» заменится словом «обновление») и в бланке запроса появится строка «обновление», в которой вписывается значение обновляемого поля.

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

Для запуска запроса нажать кнопку. После запуска можно убедиться в правильности, вернув запрос в положение «Выборка» (очевидно, что если обновлялись поля отбора, то там нужно проставлять уже новое значение).

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

Нажать или кнопку «Тип запроса» или Запрос / Создать таблицу в меню, появится диалоговое окно для ввода имени таблицы и указания в какой БД делать таблицу.

Стр. 58.

Как и в других случаях появится информационное сообщение о количестве записей.

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

Типичное применение запроса на создание новой таблицы- создание резервных копий (помнить о ключе).

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

Запросы на добавление.

Условия применения:

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

2.При добавлении в другую БД необходимо знать ее местоположение и имя.

3.Если добавляются записи с полем Счетчик (ключевое поле), добавлять само поле Счетчик не следует (если в таблице, куда добавляем, уже есть это поле см. П.1).

Все остальное аналогично предыдущим.

Запросы на удаление.

Особенность этих запросов в том, что если затронуты связи, для которых включена «Целостность данных» и «Каскадное удаление», то автоматически оно пройдет по всем связям.

Запрос на удаление удаляет данные безвозвратно.

Проблемы, возникающие при работе с запросами на изменение.

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

· Если тип данных добавляемых записей не подходит, то записи создаются (ключи), но пустые.

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

· Не позволяется удаление содержимого поля со стороны «один» при связи «один ко многим» до удаления всех записей со стороны «многие».

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

При добавлении или изменении текстовых полей с превышением длины произойдет усечение (без выдачи каких-либо сообщений).

Сохранение запросов.

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

· Если для поля не включена опция «Вывод на экран», но указаны условия отбора, оно расположится справа.

· Если для поля не включена опция «Вывод на экран» и не указаны условия отбора или сортировки, оно будет удалено из запроса.

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

Имя Покупателя : Customer Name