8 что такое запрос на обновление записей
Запросы могут применяться также для добавления, удаления и обновления группы записей таблицы. Такие запросы являются мощным инструментом преобразования данных, они называются запросами действия. К примеру, нам нужно изменить в таблице «Книги» номер по картотеке. Заменить первую цифру – 4 на 6. Подобную операцию трудно провести «вручную», если в таблице больше тысячи записей.
3.4.1. Создаем новый запрос в режиме конструктора.
3.4.2. В окне конструктора открываем таблицу «Книги».
3.4.3. В значение поле выбираем «Номер по картотеке».
| Рис.3.9. Окно конструктора запроса |
3.4.4. В поле «Тип запроса» выбираем запрос на обновление, при этом в бланке запроса появиться еще одно поле – обновление, в которое нужно ввести новое значение поля.
3.4.5. В поле «Обновление» вызываем контекстное меню, щелкаем на пункте «Построить»
3.4.6. В окне построителя выражений пишем формулу:
| Рис.3.10. Окно построителя выражений |
3.4.7. В поле «Условие отбора» вызываем контекстное меню, щелкаем на пункте «Построить»
3.4.8. В окне построителя выражений пишем формулу:
| Рис.3.11. Окно построителя выражений |
3.4.9. Закрываем запрос, сохранив под именем «Обновление».
3.4.10. Двойным кликом выполняем запрос «Обновление», Access проинформирует об обнаружении одной записи, удовлетворяющей условию отбора, и попросит подтвердить необходимость ее изменения.
Создание запросов на обновление таблиц
Запросы на обновление используются главным образом для того, чтобы внести изменения сразу в большое количество записей с помощью одного запроса. Классическим примером такого запроса является изменение цены в таблице «Товары» (Products) на некоторый постоянный коэффициент, например можно увеличить цену одной из категорий товара на 20%. Чтобы создать такой запрос:
- Раскройте список таблиц, щелкнув мышью по ярлыку Таблицы (Tables) окна базы данных.
- Выделите таблицу «Товары» (Products). Щелкните левой кнопкой мыши по стрелке на кнопке Новый объект (New Object) на панели инструментов и выберите из списка значение Запрос (Query). Появится окно Конструктора запросов с таблицей «Товары» в верхней части. Перенесите в бланк запроса поля «Цена» и «КодТипа».
- Введите условие отбора записей: например, в столбец «КодТипа» введите значение 1.
- Выполните запрос, чтобы убедиться, что отбираются все записи, содержащие напитки.
- Теперь изменим запрос, превратив его в запрос на обновление. Для этого выполните команду меню Запрос, Обновление (Query, Update). Изменяется заголовок запроса и появляется дополнительная строка Обновление (Update To). При этом исчезают строки Сортировка (Sort) и Вывод на экран (Show) (рис. 8.8).
- Теперь нужно в строку Обновление (Update To) ввести выражение, по которому будет вычисляться новая цена: [Цена]* 0, 2. В других случаях можно вводить константу, например, если нужно поменять дату во многих записях на текущую.
- Теперь можно выполнить запрос. Для этого нажмите кнопку Запуск (Run) на панели инструментов. Так же, как и при добавлении записей в таблицу, Access выдаёт сообщение о количестве обновляемых записей и запрашивает подтверждение на обновление. Вы можете подтвердить обновление записей или отвергнуть.
Рис. 8.8. Запрос на обновление записей
Прежде чем выполнять запрос на обновление, щелкните левой кнопкой мыши по стрелке на кнопке Вид (View) и выберите Режим таблицы (Datasheet View). Вы увидите все записи, которые будут обновлены, хотя данные в обновляемых полях будут еще старые. И только убедившись, что отобраны нужные записи, можно выполнять запрос.
В приведенном примере изменялись значения в поле, которое не является первичным ключом в таблице «Товары» (Products). Особый случай возникает, когда требуется обновить значение первичного ключа в таблице. Если эта таблица связана отношением «один-ко-многим» с другими таблицами, то при изменении первичного ключа записи должны одновременно измениться значения внешних ключей во всех связанных записях подчиненных таблиц. Access обеспечивает выполнение такого изменения автоматически, т. к. поддерживает каскадное обновление записей. При определении связи между таблицами можно установить флажок каскадное обновление связанных полей (Cascade Update Related Fields).
Если такой флажок установлен, то при изменении значения первичного ключа в главной таблице Access автоматически выполняет специальный запрос, с помощью которого обновляются внешние ключи всех связанных записей в подчиненной таблице.
Убедиться в том, как работает такой запрос, можно на примере таблиц «Сотрудники» (Employees) и «Заказы» (Orders). Для этого нам придется сначала сделать копии этих таблиц и установить связь между ними:
- Раскройте список таблиц в окне базы данных и выделите таблицу «Сотрудники».
- Скопируйте таблицу в буфер обмена, нажав комбинацию клавиш + .
- Вставьте таблицу из буфера обмена, нажав комбинацию клавиш + . Появится диалоговое окно Вставка таблицы (Paste Table As).
- В поле Имя таблицы (Table Name) введите строку: Сотрудники (копия). Оставьте предлагаемое по умолчанию значение переключателя в группе Параметры вставки (Paste Options). Нажмите кнопку ОК или клавишу . В списке появится новая таблица.
- Выполните шаги 1—4 для таблицы «Заказы», создав таблицу «Заказы (копия)».
- Для выполнения примера нам придется немного изменить таблицу «Заказы (копия)». Поле «КодСотрудника» в таблице «Заказы» является полем подстановки, т. е. хотя в этом поле содержатся коды сотрудников, при отображении таблицы в этом поле показываются фамилия и имя сотрудника. Мы можем временно удалить поле подстановки, чтобы видеть результаты каскадного обновления данного поля. Для этого достаточно открыть таблицу «Заказы (копия)» в режиме Конструктора, выделить строку «КодСотрудника», раскрыть в панели Свойства поля (Field Properties) вкладку Подстановка (Lookup) и установить значение свойства Тип источника строк (Row Source Type) равным Поле (Text box). Сохраните изменение.
- Еще одно изменение потребуется ввести в таблицу «Сотрудники (копия)». Поле «КодСотрудника» в ней имеет тип Счетчик (AutoNumber), поэтому Access не позволит изменить значение в этом поле. Откройте эту таблицу в режиме Конструктора и замените тип данных для поля «КодСотрудника» на Числовой (Number).
- Теперь нужно установить связи между новыми таблицами. Нажмите кнопку Схема данных (Relationships) на панели инструментов для вывода окна Схема данных (Relationships).
- Нажмите кнопку Очистить макет (Clear Layout), чтобы очистить окно схемы данных. Подтвердите свое намерение в окне сообщения, нажав кнопку Да (Yes).
- Добавьте таблицы «Сотрудники (копия)» и «Заказы (копия)» с помощью диалогового окна Добавление таблицы (Show Table). Для этого нажмите соответствующую кнопку на панели инструментов.
- Чтобы установить связь «один-ко-многим» между таблицами, перетащите поле «КодСотрудника» таблицы «Сотрудники (копия)» в соответствующее поле таблицы «Заказы (копия)». Появится диалоговое окно Изменение связей (Edit Relationship).
- В этом окне необходимо установить флажки Обеспечение целостности данных (Enforce Referential Integrity) и каскадное обновление связанных полей (Cascade Update Related Fields) (рис. 8.9). Нажмите кнопку ОК.
- Закройте окно Схема данных (Relationships).
Рис. 8.9. Диалоговое окно Изменение связей
Для выполнения каскадного обновления:
- Откройте таблицы «Сотрудники (копия)» и «Заказы (копия)» и разместите их на экране так, чтобы были видны обе таблицы (рис 8.10).
- Отсортируйте таблицу «Заказы (копия)» по столбцу «Сотрудник». Для этого выделите данный столбец, щелкнув левой кнопкой мыши по его заголовку, и нажмите кнопку Сортировка по возрастанию (Sort Ascending) на панели инструментов.
- Измените значение в столбце «Код сотрудника» первой записи таблицы «Сотрудники (копия)», введя число 10, и нажмите клавишу , чтобы перейти к следующей записи. Изменение кода сразу же будет отображено в столбце «Сотрудник» таблицы «Заказы (копия)».
Рис. 8.10. Каскадное обновление записей
Пособие для студентов Модуль 3
Учебно-методическое пособие содержит Модуль 3, состоящий из двух разделов:
- Моделирование;
- База данных.
В начале каждого раздела указаны маршрутные карты, которые определяют последовательность самостоятельного изучения теоретического материала, сроки выполнения практических и индивидуальных заданий, сроки сдачи промежуточных и итоговых тестирований.
Для проверки знаний в учебном пособии приведены вопросы для самоконтроля.
Составители: Глазова В.Ф., Панюкова Е.В.
© Тольяттинский государственный университет, 2009
Маршрутная карта изучения дисциплины по Модулю 3. 5
1. Современное состояние проблемы моделирования систем. 6
2. Принципы моделирования. 8
3. Классификация моделей. 8
4. Моделирование систем. 11
5. Математическое моделирование. 13
5.1. Математические схемы моделирования систем. 13
5.2. Непрерывно-детерминированные модели (D-схемы). 14
5.3. Дискретно-детерминированные модели (F-схемы). 15
5.4. Дискретно-стохастические модели (Р-схемы). 15
5.5. Непрерывно-стохастические модели (Q-схемы). 15
5.6. Сетевые модели (N-схемы). 15
5.7. Комбинированные модели (А-схемы). 15
6. Анализ результатов машинного моделирования. 15
6.1. Корреляционный анализ результатов моделирования. 16
6.2. Регрессионный анализ результатов моделирования. 16
6.3. Дисперсионный анализ результатов моделирования. 18
6.4. Вопросы для самоконтроля. 19
7. Методические указания для выполнения практического задания №1. «Построение простейших моделей». 20
Приложение 1. Варианты заданий. 20
8. Методические указания для выполнения практического задания №2. «Построение регрессионной модели» с использованием табличного процессора Microsoft Excel. 22
9. Методические указания для выполнения индивидуального задания №1. «Построение регрессионной модели» средствами языка программирования Turbo Pascal. 23
Приложение 2. Варианты заданий. 24
10. Основные понятия теории баз данных. 28
10.1. Базы данных и системы управления базами данных. Модели данных. 28
10.2. Основы проектирования реляционных баз данных. 31
10.3. Этапы проектирования реляционной базы данных. 34
10.4. Вопросы для самоконтроля. 37
11. Основы работы с СУБД Microsoft Access. 37
11.1. Объекты базы данных Microsoft Access. 37
11.2. Работа с таблицами. 40
11.3. Работа с формами. 44
11.4. Работа с запросами. Запросы на выборку. 48
11.5. Итоговые запросы и запросы на изменение данных. 54
11.6. Работа с отчетами. 58
11.7. Вопросы для самоконтроля. 59
12. Методические указания для выполнения практического задания №3. «Работа с таблицами и формами базы данных Microsoft Access». 60
13. Методические указания для выполнения практического задания №4. «Работа с запросами на выборку в базе данных Microsoft Access». 67
14. Методические указания для выполнения практического задания №5. «Работа с итоговыми запросами и запросами на изменение таблиц в базе данных Microsoft Access. Создание отчетов». 73
15. Методические указания для выполнения индивидуального задания №2. «Базы данных». 84
16. Вопросы для подготовки к защите индивидуального задания №2. 84
8 что такое запрос на обновление записей
MS Access базы, помощь студентам
Запрос на обновление Access
Обубликовано: 03.04.2015
Сегодня поговорим на тему «Запрос на обновление Access». Запрос на обновление Access может быть использован для обновления данных в полях базовых таблиц. Изменения вносятся в группу записей, отбираемых с помощью указанных пользователем условий отбора. Значения для изменений в полях определяются в бланке запроса в строке Обновление (Update To).
Задача. Рассчитайте стоимость товара в каждой строке таблицы ОТГРУЗКА и сохраните ее в поле СУММА_ОТГР этой же таблицы.
- Для формирования запроса на обновление сначала создайте запрос Выборка (Select) на основе двух таблиц: обновляемой таблицы ОТГРУЗКА и таблицы ТОВАР.
- Преобразуйте запрос на выборку в запрос на обновление, щелкнув на кнопке Обновление (Update), размещенной на вкладке ленты Конструктор (Design) или выбрав команду Обновление (Update) из списка Тип запроса (Query Type) в контекстном меню запроса. После выполнения этой команды в бланке запроса появляется строка Обновление (Update To) (рис. 4.43).
- Заполните бланк запроса. Перетащите обновляемое поле СУММА_ОТГР из списка таблицы ОТГРУЗКА в строку Поле (Field). В строку Обновление (Update To) введите выражение [ЦЕНА]*[КОЛ_ОТГР], которое рассчитывает значение для обновления.

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