Модификация данных с помощью запросов
В окне базы данных перед именем запроса на изменение Access устанавливает восклицательный знак.
Под модификацией данных будем понимать обновление данных, добавление новых данных и удаление данных, потерявших свою актуальность.
Запрос на обновление
Для обновления данных может быть использован запрос на обновление. Изменения вносятся в группу записей, отбираемых с помощью указанных условий отбора. Значения для изменений в полях определяются в бланке запроса в поле «Обновление», для этого достаточно в эту строку ввести значение или выражение, определяющее новое значение поля.
Чтобы создать запрос на обновление, необходимо сначала создать запрос на выборку, который затем преобразуется в окне конструктора запросов в запрос на обновление. Для этого надо не выходя из конструктора запросов нажать кнопку Обновление.
Рассмотрим процесс создания запроса на обновление на нашей учебной базе данных. Допустим нам надо время от времени производить обновление цены товара. Поскольку цены у разных товаров разные, то необходимо указывать у какого товара мы хотим обновить цену. Это можно сделать с помощью соответствующего условия отбора, например, на поле код товара. Ну а чтобы внести новое значение цены, выражение в строке «Обновление» должно быть параметром. Таким образом, в нашем запросе должно быть два поля из таблицы «Продукты»: поле «Код клиента» и поле «Цена».
После этого надо в панели инструментов открыть список «Тип запроса» и выбрать из него «Обновление». В бланке запроса появится строка «Обновление», в которой надо указать, каким значением будет обновляться поле. В нашем случае это значение представляет собой параметр, т.е. текст подсказки в квадратных скобках.
После этого бланк запроса надо закрыть и дать запросу имя, например, «Новая цена товара».
Запрос на добавление
С помощью запроса на добавление производится добавление записей из таблицы результата запроса в таблицу базы данных. Поэтому поля добавляемых записей в запросе должны соответствовать полям существующих записей таблицы.
Структура записи таблицы запроса может не полностью совпадать со структурой записи таблицы, в которую добавляются записи. В записи запроса может быть меньше полей, если на поля существующей таблицы не наложено требование обязательности их заполнения. Допускается несоответствие типов полей, если возможно преобразование типа данных одного поля в тип данных другого поля. Кроме того, в бланк запроса могут быть включены поля, по которым задаются условия отбора.
Первоначально запрос на добавление создаётся как запрос на выборку для одной или нескольких взаимосвязанных таблиц. Затем в окне конструктора запросов он превращается в запрос на добавление нажатием кнопки Добавление. При этом открывается диалоговое окно «Добавление» в котором надо из списка выбрать таблицу, в которую будут добавляться новые данные.
Если таблица-приемник добавляемых записей находится в открытой базе данных, необходимо отметить переключатель «в текущей базе данных». Для таблицы, находящейся в другой базе данных, следует отметить переключатель «в другой базе данных» и ввести имя файла базы данных возможно с указанием полного пути.
После преобразования запроса в запрос на добавление в его бланке появляется строка «Добавление».
При формировании добавляемых записей следует иметь в виду, что в бланк запроса должны быть включены поля, соответствующие полям таблицы, в которую будет производиться добавление. Если в таблице, куда добавляются записи, есть первичный ключ, ключевые поля должны быть обязательно включены в бланк запроса. Кроме того, в бланк запроса могут быть включены поля, по которым задаются условия отбора.
Для указания в строке «Добавление» имен полей таблицы-получателя, в которые будут добавляться значения из соответствующих полей таблицы запроса, необходимо в каждом поле с раскрывающимся списком этой строки открыть список полей и выбрать нужное имя.
Если выбранные поля имеют одни и те же имена в обеих таблицах, имена в строку «Добавление» вносятся автоматически.
Если таблица, в которую добавляются записи, содержит ключевое поле, добавляемые записи должны содержать такое же поле. Те записи, добавление которых приведет к появлению совпадающих или пустых значений в ключевом поле, не будут добавлены. Записи не добавляются и в том случае, если невозможно преобразование типа данных в добавляемых полях или не выполняются условия отбора значений.
Таким образом, существует 2 варианта запросов на добавление: добавление данных из другой таблицы и создание новой записи.
1. В области таблиц должна быть отображена не та таблица, куда надо добавить запись, а откуда берутся данные (если это требуется). Целевая таблица (в которую добавляются записи) указывается в диалоговом окне, которое появляется сразу, как только установлен тип запроса (на добавление). Добавляются записи из таблицы Новые клиенты в таблицу Клиенты:
2. При создании новой записи область таблиц должна быть пустой! (там не должно быть ни одной таблицы). В области условий в строке Поле надо написать, что добавить (новое значение для каждого поля в кавычках), а в строке Добавление - куда (имена полей) (в строке Поле можно указать первую букву имени поля, затем двоеточие. Если этого не сделать, автоматически появится запись «Выражение1», «Выражение2» и т.д.):
Запрос на удаление
Запрос на удаление позволяет удалить записи из одной таблицы или из нескольких взаимосвязанных таблиц, для которых установлен флажок «каскадное удаление связанных записей». В запросе указываются таблицы, из которых должны удаляться записи, и задаются условия отбора удаляемых записей.
Первоначально запрос на удаление создается как запрос на выборку, в схему данных которого включаются взаимосвязанные таблицы, их которых требуется удалить записи и для полей которых задаются условия отбора. Затем запрос в режиме конструктора преобразуется в запрос на удаление нажатием кнопки Удаление на вкладке Конструктор.
После преобразования запроса в запрос на удаление в его бланке появляется строка «Удаление». Затем формируется бланк запроса.
Для задания таблицы, записи которой требуется удалить, надо переместить с помощью мыши символ звёздочки из списка полей соответствующей таблицы в бланк запроса. В строке «Удаление» в этом поле появляется значение «Из». Для задания условий отбора удаляемых записей необходимо переместить с помощью мыши в бланк запроса те поля, для которых устанавливаются условия отбора. В строке «Удаление» в полях с этими именами появляется значение «Условие». Строку «Условие отбора» для этих полей следует заполнить необходимыми условиями.
Следует иметь в виду, что удаленные записи нельзя восстановить. Результаты работы запроса на удаление зависят от установленных в схеме базы данных отношений между таблицами и параметров целостности.
Записи подчинённой таблицы самого нижнего уровня могут быть удалены независимо от параметров целостности. Если параметры целостности не установлены вообще, то записи удаляются только в указанных в бланке запроса таблицах и вне зависимости от их логических связей.
После удаления подчинённых записей можно выполнить удаление записей в главной таблице. Такая последовательность удаления записей необходима, если между таблицами, находящимися в отношении типа один-ко-многим, установлена связь, но не установлен флажок «каскадное удаление связанных записей». Если этот флажок установлен, то для удаления записей главной таблицы и связанных с ними подчинённых записей достаточно указать в запросе удаление записей главной таблицы. Если флажок каскадного удаления не установлен, то удаление записей главной таблицы возможно только при отсутствии в подчинённой таблице связанных записей.
Рассмотрим пример создания запроса на удаление. Пусть необходимо удалять записи из таблицы «Заказы» если клиент не оплатил заказ. Очевидно, условием отбора записи на удаление должно служить определённое значение кода клиента и дата совершения заказа. Так как таблица «Заказы» является подчинённой таблицей нижнего уровня, то удаление её связей может происходить независимо от записей в других таблицах.
Итак, вызываем конструктор запросов и указываем в качестве источника для создания запроса таблицу «Заказы». Из списка типов запросов выбираем тип «Удаление». После этого перетаскиваем символ звёздочки из списка полей таблицы заказы в первое поле запроса. Затем из списка полей таблицы «Заказы» перетаскиваем в бланк запроса поле «Код клиента», а в строке «Условие отбора» этого поля записываем параметрическое приглашение набрать код клиента. Затем из списка полей таблицы «Заказы» перетаскиваем в бланк запроса поле «Дата», а в строке «Условие отбора» этого поля записываем параметрическое приглашение набрать дату. На этом формирование бланка запроса на удаление будет закончено и он должен выглядеть, как представлено на рис.
Теперь бланк запроса можно закрыть, дав запросу имя, например, «Удаление заказа» и подтвердив сохранение внесённых изменений.
Запрос на создание новой таблицы
Запрос на создание новой таблицы позволяет построить новую таблицу на основе результирующего набора записей другого запроса. Такие запросы обычно применяют для архивирования старых записей или для создания резервных копий таблиц. Технология та же. Сначала необходимо подготовить запрос на выборку и получить результирующий набор данных, заодно проверив корректность запроса. Затем надо вернуться в режим конструктора и в меню Запрос выбрать команду Создание таблицы. Откроется диалоговое окно Создание таблицы, в которое следует ввести имя новой таблицы. Далее надо выполнить запрос. В специальном диалоговом окне Access укажет, сколько записей добавляется в новую таблицу и потребует подтвердить выполнение этой операции. После сохранения запроса в окне БД перед его именем добавляется значок с 2 таблицами.
Дата добавления: 2020-03-21; просмотров: 568;