Тема 9. Запросы на изменение

         Цель изучения темы: освоить правила подготовки группы запросов на изменения в исходных записях таблиц, которые были сформированы на этапе создания базы данных.

9.1. Запрос на создание таблиц

            Запрос на создание таблиц создаёт новую таблицу на основе всех или части данных из одной или нескольких существующих таблиц и запросов. Этот тип запроса полезен при формировании таблицы для экспорта в другие базы данных или для создания архива. Предположим, в отделе кадров необходимо создать архив данных на определённый момент времени (учтите, что смысл ведения базы данных – всё время пополнять её новыми данными, записями или вносить изменения в существующие значения данных, поэтому время от времени создают промежуточные архивы). Формировать запрос по созданию таблицы можно как в режиме Мастера, так и в режиме Конструктора (он более предпочтителен, так как позволяет вводить условия отбора записей). Нас интересуют данные по состоянию на сегодняшний день, которые включают фамилии всех сотрудников, занимающие должности менеджеров и старших инженеров, проработавшие в организации не менее трёх лет. Очевидно, для формирования запроса, понадобятся таблицы «Личные сведения» и «Надбавка за стаж».

  1. В карточку запроса конструктора внесите необходимые поля из таблиц, задайте условия отбора данных для архива (Рис. 103).

image246.png

Рис. 103. Новая таблица, созданная в режиме Конструктор

  1. На панели нажать на пиктограмму image247.png или в поле конструктора с таблицами кликнуть правой клавишей мыши, выбрать из меню image248.png, а затем image249.png. Ввести имя новой таблицы, например, «Архивные данные» (Рис. 104), указать место расположения таблицы image250.png, в противном случае необходимо найти имя файла в другой базе данных.
  2. После закрытия диалогового окна «Создание таблицы», закройте запрос, предварительно задав ему имя, например, «В архив», тогда в окне переходов базы данных появится новая строка (в запросах) - image251.png.

image252.png

Рис. 104. Создание имени новой таблицы в текущей базе данных

  1. При открытии запроса, система даст сообщение (Рис. 105), нажав на кнопку «Да», система сформирует ответ со сведениями (Рис. 106) о создании новой таблицы.

image253.jpg

Рис. 105. Окно с предупреждением при обращении к запросу

image254.png

Рис. 106. Сообщение системы о создании архивной таблицы

            В окне переходов базы данных появилась новая таблица:  , откройте её, результаты показаны на рисунке 107.

image256.png

Рис. 107. Сведения, скопированные в архивную таблицу

9.2. Обновление записей

            Запрос на обновление вносит общие изменения в группу записей одной или нескольких существующих таблицах. Конечно, можно всё сделать вручную, для этого придётся открыть исходную таблицу, внести изменение в соответствующую запись, а затем проверить, как это изменение отразилось на связанных таблицах и в запросах. С помощью запроса на обновление записей все действия автоматизируются. Предположим, руководство организации решило изменить на 5 процентов надбавки за стаж определённой категории должностей, необходимо провести пересчёт во всех таблицах и запросах.

  1. Создайте запрос в режиме Конструктор, включив в него поля, подлежащие обновлению, и поля необходимые для задания условий отбора. В рассматриваемом примере воспользуемся таблицей «Должности», и перенесём в бланк запроса поля «Надбавка» и «Стаж работы сотрудника».
  2. На панели воспользуйтесь пиктограммой image257.png или найдите её через контекстно-всплывающее меню, когда щёлкните правой кнопкой мыши в окне таблицы. Появится новая строка в бланке запроса с наименованием «Обновление» (Рис. 108). Заполните бланк запроса, в столбец «Надбавка» для строки «Обновление» введите формулу, которая обозначает, что указанная величина надбавки умножается на заданный коэффициент. В поле «Стаж работы сотрудника» введите предписание для открытия диалогового окна, как показано на рисунке 108. Закройте запрос, при его сохранении введите, например, «Изменение надбавки».

image258.png

Рис. 108. Заполненный бланк запроса на обновление записей

  1. В окне переходов базы данных появится запрос image259.png, запустите его на исполнение, система даст сообщение (Рис. 109), нажмите на кнопку «Да».

image260.jpg

Рис. 109. Предупреждение системы о запуске запроса на обновление

            В появившееся диалоговое окно введите диапазон изменения записи (Рис. 110), нажмите кнопку image261.png, после чего система сформирует сообщение о внесении обновления (Рис. 111).

image262.png

Рис. 110. Диалоговое окно для ввода параметра в таблице «Надбавка за стаж»

image263.png

Рис. 111. Сообщение системы о проведённом обновлении

            Теперь можете проверить результаты работы запроса на обновление, для этого последовательно откройте таблицы и запросы, в которых фигурировали данные с указанием величины надбавки за стаж. Следует отметить, что обновление записей удобно ещё и тем, что замена (изменение) записи осуществляется в режиме диалога пользователя с базой данных.

9.3. Удаление записей

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

  1. Создайте новый запрос в режиме Конструктор. Перенесите в него таблицу «Архивные данные», из которой в бланк запроса внесите одно поле «Фамилия».
  2. На панели инструментов щёлкните по пиктограмме или воспользуйтесь правой кнопкой мыши, чтобы в контекстно-всплывающем меню открыть image264.png, а затем image265.png. Бланк запроса получит новую строку «Удаление».
  3. Введите в бланк запроса в строку «Условие отбора» текст, который будет отображаться в диалоговом окне при выполнении запроса (Рис. 112).

image266.jpg

Рис. 112. Подготовка запроса на удаление записей

  1. Закройте окно с запросом в Конструкторе, задайте имя запросу, например, «Удалить фамилию из архива», в окне переходов базы данных появится новый вид запроса image267.png. Запустите этот запрос, система сформирует сообщение (Рис. 113). После того, как будет нажата кнопка image268.png, появится диалоговое окно для ввода параметра удаления записи из таблицы «Архивная» (Рис. 114). Нажмите на кнопку image269.png, прочитайте предупреждение системы о действии операции удаления (Рис. 115), нажмите на кнопку image268.png.

image270.jpg

Рис. 113. Сообщение системы о запуске запроса на удаление

image271.png

Рис. 114. Диалоговое окно для ввода параметра удаления

image272.png

Рис. 115. Повторное предупреждение системы о действии операции удаления

            Можете проверить, как прошло удаление фамилии, а затем повторить выполнение запроса. Необходимо отметить, что можно было ввести несколько полей в бланк запроса на удаление, применить другие параметры удаления, например, логические операции, которые целесообразно использовать при удалении нескольких записей (например, должности). В том случае, если создать запрос на удаление для таблицы, которая имеет связи с другими таблицами и запросами, то удаление записей будет проведено каскадом, вот, для чего при установлении связей между таблицами используют пометку в строке image273.png (окно «Изменение связей»). Поэтому, если при создании схемы данных такая пометка не была поставлена, то её всегда можно дополнить при создании запроса. Для выполнения этой операции откройте окно «Схема данных» на вкладке «Работа с базами данных», щёлкните правой кнопкой мыши по связи между таблицами, выберите строку - image274.png,а затем выполните необходимые правки в окне «Изменение связей».

Вопросы для самоконтроля
  1. В чём заключается отличие группы запросов на выборку от группы запросов на изменение?
  2. В чём заключается идея проектирования запроса на создание таблиц?
  3. Дайте краткий алгоритм создание запроса на обновление.
  4. При выполнении запроса на обновление, происходит ли изменение данных во всех связанных записях других таблиц и запросов?
  5. Что происходит с записями, которые назначаются на удаление и можно ли их восстановить после выполнения запроса?
  6. Можно ли сформировать запрос на удаление с несколькими параметрами в условии удаления?
  7. Требует ли запрос на обновление установки специального параметра в окне связей между таблицами, что бы во всех запросах и таблицах была проведена операция обновления данных?
  8. Как влияют запросы на удаление и изменение на данные, которые находятся в связанных таблицах и запросах?