Как сделать запрос на обновление в access 2010?

Создание и выполнение запроса на обновление

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

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

Для добавления новых записей используется запрос на добавление, для удаления записей — запрос на удаление.

В этой статье

Ниже представлены сходства и различия между функцией «Поиск и замена» и запросом на обновление

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

В отличие от функции Поиск и замена запрос на обновление позволяет:

использовать условия, которые не зависят от заменяемого значения;

обновлять несколько записей за раз;

изменять записи в нескольких таблицах одновременно.

Ограничения обновления полей

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

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

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

Поля с типом данных «Счетчик». Значения в полях с типом данных «Счетчик» изменяются только при добавлении записи в таблицу.

Поля в запросах уникальных значений и уникальных запросов на поиск записей Значения в таких запросах суммируются. Некоторые значения представляют одну запись, а другие — более одной записи. Операция обновления невозможна, так как невозможно определить, какие записи были исключены как дубликаты, и, следовательно, невозможно обновить все необходимые записи. Это ограничение действует, если вы используете запрос на обновление или пытаетесь обновить данные вручную путем ввода значений в форму или таблицу.

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

Читать еще:  Как сделать запрос с вычисляемым полем в access?

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

Примечание: При каскадном обновлении Access автоматически обновляет значения внешнего ключа при изменении значения первичного ключа в родительской таблице.

Использование запроса на обновление

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

Совет: Перед выполнением запроса на обновление рекомендуется создать резервную копию базы данных. Результаты данного запроса нельзя отменить, а созданная резервная копия позволит вам восстановить данные в случае необходимости.

Создание резервной копии базы данных

Откройте вкладку Файл и выберите команду Сохранить как. Обратите внимание: если вы используете Access 2010, откройте вкладку Файл и выберите команду Сохранить и опубликовать.

Справа в разделе Расширенная установка щелкните элемент Создать резервную копию базы данных.

В диалоговом окне Сохранение резервной копии укажите имя и расположение резервной копии и нажмите кнопку Сохранить.

Приложение Access закроет исходный файл, создаст резервную копию и снова его откроет.

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

В этом разделе

Этап 1. Создание запроса на выборку для определения обновляемых записей

Откройте базу данных, содержащую записи, которые нужно обновить.

На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.

Откроется конструктор запросов и диалоговое окно Добавление таблицы.

Откройте вкладку Таблицы.

Выделите одну или несколько таблиц с записями, которые требуется обновить, и нажмите кнопку Добавить, а затем — кнопку Закрыть.

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

1. Таблица в окне конструктора запросов

2. Бланк запроса

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

Для каждого столбца в бланке запроса можно добавить одно поле таблицы.

Чтобы быстро добавить все поля в таблице, дважды щелкните звездочку (*) в верхней части списка полей таблицы в окне таблицы. На рисунке показан бланк запроса со всеми добавленными полями.

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

Таблица примеров условий

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

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

Читать еще:  Как сделать диаграмму в access?

Создание запросов на обновление таблиц

Запросы на обновление используются главным образом для того, чтобы внести изменения сразу в большое количество записей с помощью одного запроса. Классическим примером такого запроса является изменение цены в таблице «Товары» (Products) на некоторый постоянный коэффициент, например можно увеличить цену одной из категорий товара на 20%. Чтобы создать такой запрос:

  1. Раскройте список таблиц, щелкнув мышью по ярлыку Таблицы (Tables) окна базы данных.
  2. Выделите таблицу «Товары» (Products). Щелкните левой кнопкой мыши по стрелке на кнопке Новый объект (New Object) на панели инструментов и выберите из списка значение Запрос (Query). Появится окно Конструктора запросов с таблицей «Товары» в верхней части. Перенесите в бланк запроса поля «Цена» и «КодТипа».
  3. Введите условие отбора записей: например, в столбец «КодТипа» введите значение 1.
  4. Выполните запрос, чтобы убедиться, что отбираются все записи, содержащие напитки.
  5. Теперь изменим запрос, превратив его в запрос на обновление. Для этого выполните команду меню Запрос, Обновление (Query, Update). Изменяется заголовок запроса и появляется дополнительная строка Обновление (Update To). При этом исчезают строки Сортировка (Sort) и Вывод на экран (Show) (рис. 8.8).
  6. Теперь нужно в строку Обновление (Update To) ввести выражение, по которому будет вычисляться новая цена: [Цена]* 0, 2. В других случаях можно вводить константу, например, если нужно поменять дату во многих записях на текущую.
  7. Теперь можно выполнить запрос. Для этого нажмите кнопку Запуск (Run) на панели инструментов. Так же, как и при добавлении записей в таблицу, Access выдаёт сообщение о количестве обновляемых записей и запрашивает подтверждение на обновление. Вы можете подтвердить обновление записей или отвергнуть.

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

Прежде чем выполнять запрос на обновление, щелкните левой кнопкой мыши по стрелке на кнопке Вид (View) и выберите Режим таблицы (Datasheet View). Вы увидите все записи, которые будут обновлены, хотя данные в обновляемых полях будут еще старые. И только убедившись, что отобраны нужные записи, можно выполнять запрос.

В приведенном примере изменялись значения в поле, которое не является первичным ключом в таблице «Товары» (Products). Особый случай возникает, когда требуется обновить значение первичного ключа в таблице. Если эта таблица связана отношением «один-ко-многим» с другими таблицами, то при изменении первичного ключа записи должны одновременно измениться значения внешних ключей во всех связанных записях подчиненных таблиц. Access обеспечивает выполнение такого изменения автоматически, т. к. поддерживает каскадное обновление записей. При определении связи между таблицами можно установить флажок каскадное обновление связанных полей (Cascade Update Related Fields).

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

Убедиться в том, как работает такой запрос, можно на примере таблиц «Сотрудники» (Employees) и «Заказы» (Orders). Для этого нам придется сначала сделать копии этих таблиц и установить связь между ними:

  1. Раскройте список таблиц в окне базы данных и выделите таблицу «Сотрудники».
  2. Скопируйте таблицу в буфер обмена, нажав комбинацию клавиш + .
  3. Вставьте таблицу из буфера обмена, нажав комбинацию клавиш + . Появится диалоговое окно Вставка таблицы (Paste Table As).
  4. В поле Имя таблицы (Table Name) введите строку: Сотрудники (копия). Оставьте предлагаемое по умолчанию значение переключателя в группе Параметры вставки (Paste Options). Нажмите кнопку ОК или клавишу . В списке появится новая таблица.
  5. Выполните шаги 1—4 для таблицы «Заказы», создав таблицу «Заказы (копия)».
  6. Для выполнения примера нам придется немного изменить таблицу «Заказы (копия)». Поле «КодСотрудника» в таблице «Заказы» является полем подстановки, т. е. хотя в этом поле содержатся коды сотрудников, при отображении таблицы в этом поле показываются фамилия и имя сотрудника. Мы можем временно удалить поле подстановки, чтобы видеть результаты каскадного обновления данного поля. Для этого достаточно открыть таблицу «Заказы (копия)» в режиме Конструктора, выделить строку «КодСотрудника», раскрыть в панели Свойства поля (Field Properties) вкладку Подстановка (Lookup) и установить значение свойства Тип источника строк (Row Source Type) равным Поле (Text box). Сохраните изменение.
  7. Еще одно изменение потребуется ввести в таблицу «Сотрудники (копия)». Поле «КодСотрудника» в ней имеет тип Счетчик (AutoNumber), поэтому Access не позволит изменить значение в этом поле. Откройте эту таблицу в режиме Конструктора и замените тип данных для поля «КодСотрудника» на Числовой (Number).
  8. Теперь нужно установить связи между новыми таблицами. Нажмите кнопку Схема данных (Relationships) на панели инструментов для вывода окна Схема данных (Relationships).
  9. Нажмите кнопку Очистить макет (Clear Layout), чтобы очистить окно схемы данных. Подтвердите свое намерение в окне сообщения, нажав кнопку Да (Yes).
  10. Добавьте таблицы «Сотрудники (копия)» и «Заказы (копия)» с помощью диалогового окна Добавление таблицы (Show Table). Для этого нажмите соответствующую кнопку на панели инструментов.
  11. Чтобы установить связь «один-ко-многим» между таблицами, перетащите поле «КодСотрудника» таблицы «Сотрудники (копия)» в соответствующее поле таблицы «Заказы (копия)». Появится диалоговое окно Изменение связей (Edit Relationship).
  12. В этом окне необходимо установить флажки Обеспечение целостности данных (Enforce Referential Integrity) и каскадное обновление связанных полей (Cascade Update Related Fields) (рис. 8.9). Нажмите кнопку ОК.
  13. Закройте окно Схема данных (Relationships).
Читать еще:  Как сделать сложные запросы в access?

Рис. 8.9. Диалоговое окно Изменение связей

Для выполнения каскадного обновления:

  1. Откройте таблицы «Сотрудники (копия)» и «Заказы (копия)» и разместите их на экране так, чтобы были видны обе таблицы (рис 8.10).
  2. Отсортируйте таблицу «Заказы (копия)» по столбцу «Сотрудник». Для этого выделите данный столбец, щелкнув левой кнопкой мыши по его заголовку, и нажмите кнопку Сортировка по возрастанию (Sort Ascending) на панели инструментов.
  3. Измените значение в столбце «Код сотрудника» первой записи таблицы «Сотрудники (копия)», введя число 10, и нажмите клавишу , чтобы перейти к следующей записи. Изменение кода сразу же будет отображено в столбце «Сотрудник» таблицы «Заказы (копия)».

Рис. 8.10. Каскадное обновление записей

Ссылка на основную публикацию
Adblock
detector