Microclimate.su

IT Новости
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Аксесс запрос на обновление

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

Запросы на обновление используются главным образом для того, чтобы внести изменения сразу в большое количество записей с помощью одного запроса. Классическим примером такого запроса является изменение цены в таблице «Товары» (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).
Читать еще:  Связи между таблицами в аксесс

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

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

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

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

Аксесс запрос на обновление

Запрос на обновление Access

Сегодня поговорим на тему «Запрос на обновление Access». Запрос на обновление Access может быть использован для обновления данных в полях базовых таблиц. Изменения вносятся в группу записей, отбираемых с помощью указанных пользователем условий отбора. Значения для изменений в полях определяются в бланке запроса в строке Обновление (Update To).
Задача. Рассчитайте стоимость товара в каждой строке таблицы ОТГРУЗКА и сохраните ее в поле СУММА_ОТГР этой же таблицы.

  1. Для формирования запроса на обновление сначала создайте запрос Выборка (Select) на основе двух таблиц: обновляемой таблицы ОТГРУЗКА и таблицы ТОВАР.
  2. Преобразуйте запрос на выборку в запрос на обновление, щелкнув на кнопке Обновление (Update), размещенной на вкладке ленты Конструктор (Design) или выбрав команду Обновление (Update) из списка Тип запроса (Query Type) в контекстном меню запроса. После выполнения этой команды в бланке запроса появляется строка Обновление (Update To) (рис. 4.43).
  3. Заполните бланк запроса. Перетащите обновляемое поле СУММА_ОТГР из списка таблицы ОТГРУЗКА в строку Поле (Field). В строку Обновление (Update To) введите выражение [ЦЕНА]*[КОЛ_ОТГР], которое рассчитывает значение для обновления.

  • Просмотрите содержимое обновляемого поля СУММА_ОТГР перед выполнением запроса, нажав кнопку Режим (View) на ленте конструктора запросов в группе Результаты (Results).
  • Для обновления содержимого поля СУММА_ОТГР выполните запрос, нажав кнопку Выполнить (Run) на вкладке ленты Конструктор (Design). Открывается диалоговое окно с сообщением о числе обновляемых записей и вопросом о продолжении операции обновления. Подтвердите обновление записей.
  • Просмотрите содержимое обновляемого поля СУММА_ОТГР после выполнения запроса. Для этого переключитесь после выполнения запроса в режим таблицы, воспользовавшись кнопкой Режим таблицы (Datasheet View) в строке состояния или нажмите кнопку Режим (View) на вкладке ленты.
  • Читать еще:  Ключевое поле аксесс


    Таким образом, рассмотренный запрос позволяет автоматизировать расчет стоимости товара, указанного в каждой строке спецификации накладной ― записи таблицы ОТГРУЗКА.

    1. Если обновлять нужно только некоторые строки таблицы, задайте условия отбора обновляемых записей. Для этого дополните бланк запроса полем, по которому требуется произвести отбор записей. Перетащите поле КОД_ТОВ в бланк запроса и введите в строку Условия отбора (Criteria) параметр [Введите код товара] (см. рис. 4.43).
    2. Выполните запрос. Обновление будет выполнено только для записей с введенным кодом товара.
    3. Сохраните запрос под именем Расчет стоимости.
    4. Перейдите в режим SQL. Эквивалентная запросу на обновление инструкция UPDATE будет записана следующим образом:
      UPDATE ТОВАР INNER JOIN ОТГРУЗКА ON ТОВАР.КОД_ТОВ = ОТГРУЗКА.КОД_ТОВ
      SET ОТГРУЗКА.СУММА_ОТГР = [ЦЕНА]*[КОЛ_ОТГР] WHERE (((ТОВАР.КОД_ТОВ)=[Введите код товара]));

    Имена таблиц, используемых в запросе, и способ их объединения задаются не-посредственно за именем инструкции UPDATE. Инструкция UPDATE обновляет указанное в предложении SET поле ОТГРУЗКА.СУММА_ОТГР, присваивая значение, за-данное выражением [ЦЕНА]*[КОЛ_ОТГР]. Обновление происходит во всех записях, которые удовлетворяют условию отбора, заданному в предложении WHERE.
    Для закрепления смотрим видеоурок:

    Инструкция UPDATE (Microsoft Access SQL) UPDATE statement (Microsoft Access SQL)

    Область применения: Access 2013, Office 2013 Applies to: Access 2013, Office 2013

    Создает запрос на обновление, который изменяет значения в полях в указанной таблице на основании заданных условий. Creates an update query that changes values in fields in a specified table based on specified criteria.

    Синтаксис Syntax

    UPDATE таблица SET новое_значение WHERE критерии; UPDATE table SET newvalue WHERE criteria;

    Инструкция UPDATE состоит из трех указанных ниже частей. The UPDATE statement has these parts:

    Имя таблицы, содержащей данные, которые необходимо изменить. The name of the table containing the data you want to modify.

    Выражение, указывающее значение, которое необходимо вставить в определенное поле обновляемых записей. An expression that determines the value to be inserted into a particular field in the updated records.

    Выражение, определяющее, какие записи необходимо обновить. An expression that determines which records will be updated. Будут обновлены только те записи, которые удовлетворяют условиям выражения. Only records that satisfy the expression are updated.

    Комментарии Remarks

    Инструкция UPDATE особенно полезна, когда необходимо изменить большое количество записей либо когда записи, которые необходимо изменить, находятся в нескольких таблицах. UPDATE is especially useful when you want to change many records or when the records that you want to change are in multiple tables.

    Вы можете изменить одновременно несколько полей. You can change several fields at the same time. В следующем примере показано, как увеличить значения Order Amount на 10 процентов, а значения Freight на 3 процента для грузоотправителей в Соединенном Королевстве: The following example increases the Order Amount values by 10 percent and the Freight values by 3 percent for shippers in the United Kingdom:

    • Инструкция UPDATE не создает результирующее множество. UPDATE does not generate a result set. Кроме того, после обновления записи с помощью запроса на обновление вам не удастся отменить эту операцию. Also, after you update records using an update query, you cannot undo the operation. Если вам необходимо узнать, какие записи были обновлены, сначала изучите результаты выполнения запроса на выборку, использующего те же критерии, а затем запустите запрос на обновление. If you want to know which records were updated, first examine the results of a select query that uses the same criteria, and then run the update query.
    • Всегда храните резервные копии данных. Maintain backup copies of your data at all times. Если вы обновите не те записи, вы сможете восстановить их из резервных копий. If you update the wrong records, you can retrieve them from your backup copies.

    Пример Example

    В этом примере показано, как изменить значения в поле ReportsTo на 5 для всех записей сотрудников, у которых поле ReportsTo имеет значение 2. This example changes values in the ReportsTo field to 5 for all employee records that currently have ReportsTo values of 2.

    Читать еще:  Готовые базы аксесс

    Аксесс запрос на обновление

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

    Общая схема построения запросов на обновление такова:

    • В макет запроса добавляются все нужные таблицы и между ними устанавливаются необходимые связи.
    • Тип запроса устанавливается в запрос на обновление (Update Query).
    • В бланк запроса добавляются из таблиц те поля, которые необходимо обновить. В строке Обновление (Update To) указываются выражения, значения которых будут присвоены выбранным полям.
    • В последнюю очередь добавляются поля, для которых предполагается указать условия отбора.

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

    Таблица 4.8. Примеры допустимых выражений для обновления полей таблицы.

    ВыражениеРезультат
    «Днепропетровск»Заменяет значения текстового поля записей, удовлетворяющих условиям отбора, на строку «Днепропетровск»
    #8/10/99#Задает новое значение для поля типа дата/время
    (Date/Time) — 10-авг-99
    Да (или Yes)Задает значение Да (Yes) для поля логического типа
    «PN» & [Код]Для каждой записи, подлежащей обновлению, значением поля будет комбинация префикса «PN» и строки из поля Код той же записи
    [Цена] *[Количество]Значением поля каждой записи, подлежащей обновлению, будет произведение полей Цена и Количество той же записи
    [Зарплата]* 1.1Если задано для поля Зарплата, то увеличивает зарплату на 10% в записях, удовлетворяющих условиям отбора
    DSum(«[Количество]*[Цена]»,
    «Заказано», «[КодТовара]=» &
    [КодТовара])
    Для каждого товара в исходной таблице выбираются значения полей [Количество] и [Цена] из таблицы Заказано и затем суммируется их произведение. Полученное значение итоговых продаж по каждому товару обновляет соответствующее поле исходной таблицы.
    [Фамилия] & » » Left([Имя],1)
    & «.» & Left([Отчество],1) & «.«
    Значением поля будет фамилия сотрудника и его инициалы, например, Иванов И.И.

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

    ЗАМЕЧАНИЕ Иногда при попытке выполнить запрос, содержащий несколько связанных между собой таблиц, вычисляемые поля или функции типа DLookup, DSum и т.д, система выдает сообщение об ошибке и обновления таблицы не происходит. Microsoft Access требует, чтобы запрос был обновляемым (см. таблицу 4.2). Чтобы обойти это ограничение, следует попытаться упростить запрос. Если этого не удается сделать, тогда нужно переделать исходный запрос в запрос на добавление (Append Query) или в запрос на создание (Make-Table Query) временной таблицы. Потом можно обновить нужную таблицу на основе временной таблицы при помощи простого запроса на обновление. ЗАМЕЧАНИЕ Если требуется обновить первичный ключ в таблице, связанной с другой отношением один-ко-многим (one-to-many), то одновременно должны быть обновлены соответствующие внешние ключи в таблице со стороны многие (many). Microsoft Access поддерживает автоматическое обновление в том случае, если при создании связи установить флажок каскадное обновление связанных полей (Cascade Update Related Fields). ЗАМЕЧАНИЕ При обновлении записей Microsoft Access проверяет значения на соответствие условиям, заданным для полей в конструкторе таблиц, а также ограничениям, связанным со ссылочной целостностью. Если хотя бы одно из условий или ограничений не выполняется, то запись обновлена не будет и Microsoft Access выдаст сообщение об ошибке.

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

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