7. Запросы на изменение
Запрос на изменение (actionquery) позволяет выполнять более сложные действия по сравнению с выборкой определенных групп записей. Его назначение – выполнение некоторых специфических функций или действий. Запрос на изменение можно представить как запрос на выборку, который должен выполнять действия над выбранной группой записей. Access автоматически создает запрос как запрос на выборку. При необходимости можно задать другой тип запроса, используя меню Конструктора запросов. В этом меню перечислено несколько видов запросов на изменение: Создание таблицы (MakeTable), Обновление (Update), Добавление (Append), Удаление (Delete) (рис. 19). Рис. 19. Виды запросов на изменение Подобно запросам на выборку, запросы на изменение создают динамический набор данных, который можно просмотреть в режиме таблицы. Для этого щелкните на кнопке Режим таблицы (DatasheetView) панели инструментов. В отличие от запросов на выборку, запросы на изменения выполняют определенные действия при их запуске с помощью кнопки Запуск (Run) панели инструментов. В окне базы данных легко определить, какие запросы являются запросами на изменение, так как они помечены восклицательным знаком. Существует четыре типа запросов на изменение (рис. 20), которые отмечены разными пиктограммами.
Рис. 20. Пиктограммы различных видов запросов на изменение Запросы на изменение используются для выполнения следующих задач:
- Удаление записей из таблицы или группы таблиц.
- Добавление записей из одной таблицы в другую.
- Обновление информации в группе записей.
- Создание новой таблицы из определенных записей запроса.
Поскольку последствия выполнения запроса на изменение необратимы, при работе с ним выполните следующие действия:
- Создайте запрос на изменение, используя необходимые поля и критерии.
- Просмотрите выбранные записи в режиме просмотра результирующей таблицы.
- Запустите запрос на изменение, используя кнопку Запуск (Run) панели инструментов.
- Проверьте в режиме просмотра таблицы внесенные изменения.
7.2. Запрос на создание таблицы
Запрос на изменение можно применить для создания новых таблиц, используя условие отбора записей, для чего необходимо создать запрос на создание таблицы.
Предположим, что требуется информация о пациентах, относящихся к какой-либо группе риска. Для выполнения такой задачи можно сформировать новую таблицу с необходимой информацией, используя для этого таблицу PatTab пользовательской БД.
Для создания такого запроса выполните перечисленные ниже действия:
- Создайте новый запрос, используя таблицу PatTab пользовательской БД Регистратуры.
- Выберите из меню команду Запрос -> Создание таблицы (Query->MakeTable), и появится диалоговое окно Создание таблицы (MakeTable), изображенное на рисунке 21.

Рис. 21. Диалоговой окно Создание таблицы с введенным именем новой таблицы
- В поле имя таблицы введите Пациенты с группой риска и щелкните на кнопке ОК.
- Выберите поля с информацией о пациентах из таблицы PatTab.
- Укажите условие отбора: <>«нет» — в поле GroupRisk. Запрос примет вид, изображенный на рисунке 22.
6. Для просмотра набора записей, удовлетворяющих условиям отбора, перейдите в режим таблицы с помощью кнопки Вид (View) (рис. 23).

Рис. 22. Структура запроса на создание таблицы

Рис. 23. Записи, удовлетворяющие условиям отбора
Запросы на изменение
Запрос на изменение — это запрос, который за одну операцию вносит изменения в базу данных. Существует четыре типа запросов на изменение: на обновление, на добавление и удаление записей, а также на создание таблиц.
Запрос на обновление записей. Запрос на обновление записей предназначен для внесения изменений, общих для группы записей одной или нескольких таблиц. Это дает возможность пользователю изменять данные в существующих таблицах базы данных. Например, на 10 % поднимаются цены на все молочные продукты или на 5 % увеличивается зарплата сотрудников определенной категории. Для создания такого запроса пользователь должен в режиме конструктора запросов выбрать команду За- прос/Обновление. В результате ее выполнения в макете запроса появляется новая строка — Обновление (рис. 8.27). Далее необходимо выбрать таблицы, содержащие поля для записи условий отбора и требований обновления. Пример на рис. 8.27 демонстрирует запрос, с помощью которого в отношении Цены будет записана новая, сниженная на 10 % цена на процессор AMD ATHLON 64-3000.

Рис. 8.27. Макет запроса на обновление
Запрос на добавление и удаление. Запрос на добавление предназначен для добавления группы записей из одной или нескольких таблиц в другие. Например, появилось несколько новых клиентов, а также база данных, содержащая сведения о них. Чтобы не вводить все данные вручную, их можно добавить в таблицу «Клиенты». Запрос на добавление также полезен при выполнении следующих действий:
• добавление полей на основе условий отбора. Например, необходимо добавить имена и адреса клиентов с очень крупными заказами;
• добавление записей, если некоторые поля из одной таблицы не существуют в другой. Например, в демонстрационной базе данных «Борей» таблица «Клиенты» содержит 11 полей. Пусть требуется добавить записи из другой таблицы с полями, соответствующими 9 из 11 полям таблицы «Клиенты».
Запрос на добавление добавит данные в совпадающие поля и пропустит остальные.
При использовании запросов на добавление следует помнить, что они не могут добавить новые записи в базовые таблицы. Процесс создания такого запроса начинается с выполнения команды Запрос/Добавление. в режиме конструктора. Выполнение этой команды вызывает появление диалогового окна Добавление (рис. 8.28), в котором необходимо указать имя таблицы назначения. Эта таблица может принадлежать другой базе данных, найти которую можно, пользуясь кнопкой Обзор. в нижней части диалогового окна.

Рис. 8.28. Диалоговое окно Добавление
Рассмотрим случай добавления записей о продажах процессора AMD ATHLON 64-3000 в таблицу «Продажи 1», созданную для дублирования данных о продажах. Такое дублирование необходимо для обеспечения сохранности данных. Макет запроса представлен на рис. 8.29.
В противоположность запросам на добавление назначение запроса на удаление состоит в удалении группы записей из одной или нескольких таблиц. Например, запрос на удаление, макет которого представлен на рис. 8.30, позволяет удалить записи

Рис. 8.29. Макет запроса на добавление записей

Рис. 8.30. Макет запроса на удаление
о продажах 01.02.2005. C помощью запроса на удаление можно удалять только всю запись, а не отдельные поля внутри нее.
Запрос на создание таблицы. Запрос на создание таблицы предназначен для создания новых таблиц на основе всех или части данных из одной или нескольких таблиц. Такой запрос полезен для выполнения следующих действий:
• создание таблицы для экспорта в другую базу данных Microsoft Access. Например, требуется создать таблицу, содержащую все поля из таблицы Продажи, а затем экспортировать эту таблицу в базу данных, используемую бухгалтерией;
• создание отчетов, содержащих данные, соответствующие определенному моменту времени;
• создание резервной копии таблицы;
• создание архивной таблицы, содержащей старые записи.
Например, можно создать таблицу, сохраняющую все старые продажи, прежде чем удалить их из текущей таблицы Продажи;
• создание новой таблицы осуществляется с помощью команды Запрос/Создание таблицы. которая выводит диалоговое окно (рис. 8.31), куда необходимо ввести название новой таблицы и базы данных, в состав которой войдет создаваемая таблица.

Рис. 8.31. Диалоговое окно для создания запроса
Дальнейшая задача пользователя заключается в заполнении полей макета запроса. Запрос, представленный на рис. 8.32, создает таблицу, содержащую все данные о продажах, содержащиеся в нашей БД.

Рис. 8.32. Макет запроса на создание таблицы
Результат исполнения запроса представлен на рис. 8.33.

Рис. 8.33. Итоговая таблица с данными о продажах
1. Основные понятия реляционных баз данных: отношение, атрибут, запись, связь.
2. База данных MS Access и ее основные объекты.
3. Назначение и режимы работы таблиц MS Access.
4. Назначение и режимы работы форм MS Access.
5. Назначение и режимы работы запросов MS Access.
6. Виды запросов MS Access и их возможности для анализа данных.
7. Назначение и режимы работы отчетов MS Access.
Запросы изменений
Узнайте о сборе, отслеживании, автоматизации и создании отчётов о работе.
- Тема форума 1 Формы
- Тема форума 2 Отслеживание и просмотр действий в таблице
- Тема форума 3 Сортировка и фильтрация
- Тема форума 4 Автоматизация
- Тема форума 5 Оповещения и напоминания
- Тема форума 6 Запросы изменений
- Тема форума 7 Запросы утверждения
- Тема форума 8 Перемещение и копирование строк
- Тема форума 9 Действия обновления ячеек
- Тема форума 10 Проверки
- Тема форума 11 Связывание ячеек
- Тема форума 12 Отчёты
- Тема форума 13 Сводка таблицы
- Тема форума 14 Сводные отчёты по таблицам
Тема форума 6
Запросы изменений
APPLIES TO
- Smartsheet
- Pro
- Business
- Enterprise
For more information about plan types and included capabilities, see the Smartsheet Plans page.
RELATED CAPABILITIES
Who can use this capability?
Anyone can receive update requests. You must be a licensed Smartsheet user with Owner or Admin, or Editor-level permission on the sheet to create workflows. Users with Editor-level permissions can only create, edit, or delete alerts or reminders with themselves as the recipient.level permission on the sheet to create workflows. Learn about workflow permissions.
Find out if this capability is included in Smartsheet Regions or Smartsheet Gov.
Вы можете отправлять запросы на получение от соавторов сведений об изменениях, внесённых в ключевые строки, независимо от того, есть ли у этих пользователей учётная запись Smartsheet или им просто предоставлен доступ к таблице. Выберите столбцы, которые нужно включить в запросы к соавторам. Запросы можно отправлять в определённые моменты или периодически. Коллеги, подрядчики, консультанты, клиенты и другие пользователи смогут легко ответить вам с любого устройства, указав сведения о добавлении или изменении данных в простой форме.

Чтобы настроить запрос изменений вручную, следуйте пошаговым инструкциям.
Автоматический запрос изменений для задач
APPLIES TO
- Smartsheet
- Pro
- Business
- Enterprise
For more information about plan types and included capabilities, see the Smartsheet Plans page.
С помощью действий можно автоматически поручать пользователям внести актуальную информацию в часть таблицы. Например, когда пользователю назначается задача, можно настроить в Smartsheet автоматическую отправку запроса изменения этому человеку, чтобы он обновил поля «Статус» и «Предполагаемая трудоёмкость» для этой задачи.
Чтобы начать создание автоматизированного рабочего процесса, в таблице щёлкните Автоматизация > Запросить изменение.

При наличии соответствующих разрешений для автоматизации вы можете отправить запрос изменения любому пользователю, имеющему адрес электронной почты, даже если у него нет доступа к исходной таблице. Дополнительные сведения см. в статьях Уровни разрешений совместного доступа и Выбор получателей оповещений и запросов.
Управление запросами изменения, ожидающими обработки
Вы можете просматривать выполненные и ожидающие запросы изменения и даже удалять ожидающие запросы, которые, возможно, уже были обработаны.
В таблице на правой боковой панели щёлкните значок «Запрос изменения».
Щёлкните заголовок столбца, чтобы отсортировать запросы. Например, чтобы отсортировать их по дате отправки, щёлкните Отправлено.
Поля запросов, доступные только для чтения
Информацию в некоторых ячейках таблицы нельзя изменить из запроса изменения. Такие ячейки можно изменять только непосредственно в таблице, войдя в Smartsheet.
Следующие поля доступны в запросе изменения только для чтения:
- поля с формулами;
- даты начала и окончания с зависимостью (поле длительности можно редактировать);
- поле «Предшественники» (не отображается в запросе изменения);
- заблокированные столбцы.
Отображение заблокированных строк и столбцов
- Если у получателя есть разрешения на совместный доступ уровня редактора или ниже, заблокированные строки отправляются в запросе изменения, но вносить изменения получатель не может.
- Если получатель запроса изменения является владельцем таблицы или имеет разрешения уровня администратора, он может изменять заблокированные строки и столбцы из запроса.
Справочная статья
Отправка запроса изменения вручную
Если вы хотите разрешить какому-либо пользователю, не имеющему доступа к вашей таблице, изменять строки либо сделать так, чтобы другой польз.
Создание и выполнение запроса на обновление
С помощью запроса на обновление в базах данных Access можно добавлять, изменять и удалять данные в существующих записях. Запросы на обновление можно рассматривать как разновидность диалогового окна Поиск и замена с более широкими возможностями. Запрос на обновление нельзя использовать для добавления новых записей в базу данных или их удаления из нее.
Для добавления новых записей используется запрос на добавление, для удаления записей — запрос на удаление.
В этой статье
- Обзор
- Использование запроса на обновление
- Обновление данных в одной таблице данными из другой таблицы
- Выполнение запроса, заблокированного из-за режима отключения содержимого
- Версия SQL: инструкция UPDATE
Обзор
Ниже представлены сходства и различия между функцией «Поиск и замена» и запросом на обновление
Как и в диалоговом окне Поиск и замена, в запросе на обновление можно указать значение, которое требуется заменить, а также новое значение.
В отличие от функции Поиск и замена запрос на обновление позволяет:
- использовать условия, которые не зависят от заменяемого значения;
- обновлять несколько записей за раз;
- изменять записи в нескольких таблицах одновременно.
Ограничения обновления полей
Запрос на обновление нельзя использовать для обновления данных в полях указанных ниже типов.
- Вычисляемые поля. Значения вычисляемых полей не хранятся в таблице постоянно. После вычисления они существуют только во временной памяти компьютера. Поскольку для вычисляемых полей не предусмотрено место постоянного хранения, их невозможно обновить.
- Поля итогового или перекрестного запроса. Значения в запросах этих типов рассчитываются, поэтому их нельзя обновить с помощью запроса на обновление.
- Поля с типом данных «Счетчик». Значения в полях с типом данных «Счетчик» изменяются только при добавлении записи в таблицу.
- Поля в запросах с уникальными значениями и в запросах уникальных записей Значения в таких запросах суммарные. Некоторые значения представляют одну запись, а другие — несколько записей. Операция обновления не может быть, так как невозможно определить, какие записи были исключены как дубликаты, и поэтому обновить все необходимые записи невозможно. Это ограничение действует независимо от того, используете ли вы запрос на обновление или пытаетесь обновить данные вручную, вводя значения в форму или таблицу.
- Поля в запросе на объединение Данные из полей в запросе на объединение невозможно обновить, так как каждая запись, которая отображается в двух или более источниках данных, отображается в результатах запроса на объединение только один раз. Так как некоторые повторяющиеся записи удаляются из результатов, Access не может обновить все необходимые записи.
- Поля, являющиеся первичными ключами. В некоторых случаях, например если поле первичного ключа используется в связи таблиц, обновить поле с помощью запроса невозможно, если только для связи не было настроено автоматическое каскадное обновление.
Примечание: При каскадном обновлении Access автоматически обновляет значения внешнего ключа при изменении значения первичного ключа в родительской таблице.
Использование запроса на обновление
Чтобы создать запрос на обновление, рекомендуется выполнить следующее: создать запрос на выборку для определения записей, которые требуется обновить, а затем преобразовать его в запрос на обновление и обновить записи. Такая последовательность позволяет убедиться, что вы обновляете именно нужные записи.
Совет: Перед выполнением запроса на обновление рекомендуется создать резервную копию базы данных. Результаты данного запроса нельзя отменить, а созданная резервная копия позволит вам восстановить данные в случае необходимости.
Создание резервной копии базы данных
- Откройте вкладку Файл и выберите команду Сохранить как. Обратите внимание: если вы используете Access 2010, откройте вкладку Файл и выберите команду Сохранить и опубликовать.
- Справа в разделе Расширенная установка щелкните элемент Создать резервную копию базы данных.
- В диалоговом окне Сохранение резервной копии укажите имя и расположение резервной копии и нажмите кнопку Сохранить. Приложение Access закроет исходный файл, создаст резервную копию и снова его откроет. Чтобы вернуться к резервной копии, закройте и переименуйте исходный файл, чтобы получить возможность использовать имя исходной версии. Назначьте резервной копии имя исходной версии и откройте переименованную резервную копию в Access.
В этом разделе
- Этап 1. Создание запроса на выборку для определения обновляемых записей
- Этап 2. Обновление записей
Этап 1. Создание запроса на выборку для определения обновляемых записей
- Откройте базу данных, содержащую записи, которые нужно обновить.
- На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
- Откройте вкладку Таблицы.
- Выделите одну или несколько таблиц с записями, которые требуется обновить, и нажмите кнопку Добавить, а затем — кнопку Закрыть. Таблицы отображаются в конструкторе запросов в одном или нескольких окнах, а в них кажутся все поля каждой таблицы. На рисунке показан конструктор запросов с типичной таблицей. 1. Таблица в окне конструктора запросов 2. Бланк запроса
- В окнах таблиц дважды щелкните поля, которые необходимо обновить. Выделенные поля появятся в строке Поле бланка запроса. Для каждого столбца в бланке запроса можно добавить одно поле таблицы. Чтобы быстро добавить все поля в таблице, дважды щелкните звездочку (*) в верхней части списка полей таблицы в окне таблицы. На рисунке показан бланк запроса со всеми добавленными полями.
- Чтобы ограничить результаты запроса на основе значений полей, в бланке запроса в строке Условие введите условие, которое необходимо использовать для ограничения результатов. Таблица примеров условий В приведенной ниже таблице представлены некоторые примеры условий, а также результаты их применения.
Примечание: Во многих примерах этой таблицы используются подстановочные знаки, чтобы сделать запрос более гибким или эффективным.
Этап 2. Обновление записей
- На вкладке Конструктор в группе Тип запроса нажмите кнопку Обновить. В описанной здесь процедуре показано, как преобразовать запрос на выборку в запрос на обновление. При такой операции Access добавляет строку Обновление в бланк запроса. На приведенном ниже рисунке показан запрос на обновление, возвращающий все активы компании, приобретенные после 5 января 2005 г., и изменяющий расположение на «Склад 3» для всех записей, соответствующих этому условию.
- Выберите поле с данными, которые следует изменить, и введите выражение (условие изменения) в строке Обновление для этого поля. В строке Обновление можно использовать любое допустимое выражение. Таблица примеров выражений В приведенной ниже таблице представлены примеры выражений и соответствующие им результаты изменения данных.
Выражение Результат «Продавец» В поле типа «Текстовый» заменяет текстовое значение строкой «Продавец». #8/10/20 # В поле «Дата/время» изменяет значение даты на «10-авг-20». Да В поле типа «Да/Нет» изменяет значение Нет на Да. «PN» & [ИнвНомер] Добавляет буквы «PN» к началу каждого указанного инвентарного номера. [Цена] * [Количество] Перемножает значения полей с именами «Цена» и «Количество». [СтоимостьДоставки] * 1,5 Увеличивает значения в поле «СтоимостьДоставки» на 50 процентов. DSum(«[Quantity] * [UnitPrice]»,
«Сведения о заказе», «[ProductID] КодТовара» в текущей таблице совпадает со значением поля «КодТовара» в таблице «Заказано», данное выражение обновляет итоговые значения продаж, рассчитывая их как произведение значений в полях «Цена» и «Количество». Выражение использует функцию DSum, так как она может выполнять операции с несколькими таблицами и полями таблиц.Right([Индекс], 5) Обрезает (удаляет) левые символы в текстовой или числовой строке, оставляя пять правых символов. IIf(IsNull([Цена]), 0, [Цена]) Заменяет пустое (неизвестное или неопределенное) значение нулем (0) в поле с именем «Цена». - На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Появится предупреждающее сообщение.
- Для выполнения запроса и обновления данных нажмите кнопку Да.
Примечание: После выполнения запроса можно заметить, что в его результатах отсутствуют некоторые поля. Если запрос содержит поля, которые не обновлялись, по умолчанию эти поля не отображаются в результатах. Предположим, что были включены поля «Код» из двух таблиц, чтобы убедиться, что запрос идентифицирует и обновляет нужные записи. Если эти поля не обновлялись, то в приложении Access они не отображаются в результатах.
Обновление данных в одной таблице данными из другой таблицы
При обновлении данных в одной таблице данными из другой необходимо соблюдать основное правило: типы данных исходного и целевого полей должны совпадать или быть совместимыми.
Кроме того, при обновлении данных в одной таблице данными из другой и использовании совместимых типов данных вместо совпадающих приложение Access преобразует типы данных этих полей в целевой таблице. В результате некоторые данные в целевых полях могут обрезаться (удаляться). В разделе Ограничения преобразования типов данных указаны случаи, когда можно или нельзя выполнять преобразование типов данных. Также в этом разделе приведена таблица, демонстрирующая, когда преобразование типа данных может привести к изменению или удалению всех либо некоторых данных в поле, а также какие данные могут удаляться.
Процесс обновления данных в одной таблице данными из другой включает основные этапы, указанные ниже.
- Создание запроса на обновление и добавление в него исходной и целевой таблиц.
- Объединение этих таблиц по полям, содержащим связанные сведения.
- Добавление имен целевых полей в строку Поле бланка запроса.
- Добавление имен исходных полей в строку Обновление бланка запроса с использованием следующего синтаксиса: [исходная_таблица].[исходное_поле].
Действия, описанные в данном разделе, предполагают, что используются две похожих таблицы. В этом примере таблица «Клиенты» располагается в унаследованной базе данных и содержит более свежие данные, чем таблица «Заказчики». Несколько имен менеджеров и адресов были изменены. Поэтому было принято решение обновить таблицу «Заказчики» данными из таблицы «Клиенты».
