SlideShare a Scribd company logo
1 of 11
Глава 14
Автоматизация
редактирования
и управления данными
В этой главе...
* Общая информация о запросах на изменение
4 Запрос на создание таблицы
ф Запрос на добавление записей
Ф Запросы на удаление
ф Массовое обновление данных
Ф Резюме
4 Тесты
Общая информация о запросах на изменение
До настоящего момента любые правки в таблицы вносились в режиме просмотра
таблицы. Однако понятно, что при обслуживании реальных баз данных должны быть
предусмотрены иные механизмы, автоматизирующие модификацию большого числа
записей в таблицах. Таким механизмом в Microsoft Access 2003 являются запросы на
изменение. К запросам на изменение, как уже отмечалось, относятся запросы на уда-
ление, обновление, добавление записей и создание таблицы.
Основой для любого запроса на изменение служит обычный запрос на выборку, оп-
ределяющий ту группу записей, над которыми будут выполнены некоторые действия.
Поэтому при создании запроса на изменение сначала необходимо построить (в режиме
конструктора или с помощью мастера) запрос на выборку, а затем изменить в режиме
конструктора его тип. Сделать это можно, выбрав подходящий тип запроса с помощью
кнопки Тип запроса панели Конструктор запросов (рис. 14.1) или из меню Запрос.
t3- Так как запросы на изменение уже не просто осуществляют выборку опреде-
ленной информации из таблиц, а модифицируют хранимые в них данные,
привычная схема работы с запросом должна несколько измениться. Прежде,
когда речь шла о "чистых" запросах на выборку, после создания запроса
можно было смело щелкать на кнопке Запуск, не опасаясь за последствия та-
кого шага. В случае с запросами на изменение ситуация кардинально отлича-
ется, так как команда Запуск сразу изменяет данные. Вернуть таблицу к ис-
ходному виду невозможно. Единственный путь — обратиться к резервной ко-
пии таблицы, ставшей "жертвой" вашего эксперимента. Поэтому, чтобы
предотвратить потерю важных данных, перед запуском любого запроса такого
типа воспользуйтесь кнопкой Режим таблицы (одна из опций кнопки Вид па-
нели инструментов окна конструктора), чтобы просмотреть те изменения, ко-
торые ожидают таблицу в результате выполнения запроса.
•
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
Файл [Травка Вид Вставка Ззгцэос Сервис Окно ^правк
',.' ": ' ' ' '
| f i %
Выборка
Перекрестный
КодЗаказэ
ДатаЗаказа
СодПокупателя
.''ияПолучателя
Кмэтм
КодТовара
ЦенаТоеара
тво
QBMMMM
Добавление...
Ж Удаление
Попе:
Имятаблицы:
Ссртироека:
Вьвод на жран;
Услоеие отбора:
СуммаЗаказа: СодержанивЗаказов!Цен<
Рис. 14.1. В режиме конструктора можно выбрать тип запроса на изменение: каждый из них
отмечен собственной пиктограммой, дополненной восклицательнымзнаком
Чтобы обезопасить в равной степени и себя (как лицо, ответственное за данные),
ii непосредственно данные, которые подлежат изменению, при работе с запросами на
изменение не забывайте делать ^резервные копии исходных таблиц (см. подраздел
Копирование таблиц в базе данных главы 6).
Запрос на создание таблицы
Запрос такого типа выполняется в два этапа: сначала осуществляется выборка не-
обходимых записей, а затем на основе данных, полученных в результате этого запро-
са, создается новая таблица для текущей или какой-либо другой базы данных Micro-
soft Access. Одно из применений таких запросов — выделение некоторого подмноже-
ства записей, удовлетворяющих определенным условиям отбора, из одной или
нескольких таблиц для их последующего анализа или обработки.
Предположим, фирма-владелец I'nternet-аптеки собирается премировать 10 своих
наиболее активных зарегистрированных покупателей, т.е. тех клиентов, которые за
весь период обслуживания оформили заказы на наибольшую сумму. Чтобы удобнее
было работать с этими покупателями (например, сообщать им о предоставленных
компанией определенных скидках), сведения о них должны быть размещены в от-
дельной таблице. Поэтому логично решить такую задачу, обратившись к запросу на
создание таблицы. В запросе на выборку, который послужит основой для создания
новой таблицы, рассчитывается общая сумма, на которую покупателями были сдела-
ны заказы, затем результирующие записи сортируются, и в итоговую таблицу поме-
щаются десять первых записей.
Последовательность действий при построении запроса на создание таблицы будет
следующей.
1. Создайте новый запрос или выберите подходящий из уже существующих запро-
сов на выборку.
В нашем примере в запросе участвуют поля трех связанных таблиц: Покупатели,
Заказы и СодержаниеЗаказов. Вычисляемое (оно же итоговое) поле — Сумма-
Заказа — рассчитывается по уже знакомой формуле:
СуммаЗаказа: Зит((СодержаниеЗаказов!ЦенаТовара)*(СодержаниеЗаказов!Количество)).
Глава 14. Автоматизация редактирования и управления данными 293
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
12. Чтобы в результирующую таблицу были включены только 10 первых записей,
щелкните в списке Набор значений (справа от кнопки Групповые операции на
панели инструментов Конструктор запросов) и введите значение 10 в поле ввода.
Бланк запроса будет выглядеть аналогично представленному на рис. 14.2.
KgMicrosoftAccess -[ЗапросСоздание7а6лицы_Десят«аАктив«як :запросмавыборку],
Файл Главка Щид Вставка Запрос Сервис Окно Справка - - в X
* -J jj
Пароль
ИмяПокупателя
Адрес
Телефон
ЭлектронныйАдрес
Актуальность
ДэтаРегистрации
КодЗакааа
ДатаЗаказа
КолПокупателя
ИняПолучателя
АдресПолучателя
ТвлефонПолучателя JJJ
КодЗакаэа
КодТоварв
ЦенаТовара
Количество
Актуальность
ДатаРегистрации
=1
Поле;
Имятаблицы:
Групповая операция:
Сортировка:
Вывод на экран;
Условие отбора:
или:
СуммаЗаказа: 5ит((Содер:
выражение
по убыванию
т
<J_i
ИмяПокупателя
Покупатели
Группировка
в
Адрес
Покупатели
Группировка
0
Телефон
Покупатели
Группировка
0
, :
ЭлектронныйАдрес
Покупатели
Группировка
&
Актуальность—*!
Покупатели — J
Группировка ,
d i
::::••• -..*:;=#
Рис. 14.2. Бланк исходного запроса на выборку
Ц 3. Выберите команду ЗапросоСоздание таблицы или воспользуйтесь для выбора
типа запроса (на создание таблицы) кнопкой Тип запроса панели инструмен-
тов. На экране появится диалоговое окно Создание таблицы (рис. 14.3).
Создание таблицы
! имя таблицы: |десяткаАктивныхПокупателей
| <• в текущей базе данных
'• f в другой бе» данных: .<
Рис. 14.3. Диалоговое окно создания таблицы
4. Введите в поле Имя таблицы название новой таблицы, примите предложенную по
умолчанию опцию в текущей базе данных и щелкните на кнопке ОК. В заголовке
окна конструктора теперь указан другой тип запроса — на создание таблицы.
Если таблица создается для другой базы данных, выберите опцию в другой базе данных
и введите в поле имя файла полное имя файла базы данных или щелкните на кнопке
Обзор для поиска требуемого файла.
5. Проверьте правильность заполнения бланка запроса (в частности, выводится ли
строка Групповая операция) и внесите в случае необходимости нужные изменения.
6. Чтобы убедиться, что результирующая таблица включает именно те данные,
которые необходимы для новой таблицы, воспользуйтесь для предваритель-
ного просмотра режимом таблицы (рис. 14.4).
294 Часть IV. Создание и использование запросов
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
||P ЗапрасСозданиеТа6пицы_ДегяткаАктивньш: запрос «а
Имя покупателя Адрес j Электронный адр
745.83грн.
545.82грн~
19р.98грн.
169,46грн!
160,16грн.
152,88грн.
116,52грн.
101.48грн.
91,861
(Фоминых Л.И. ул. Горького 44 кв. 26 : (044) 269-1412 ,larisa@link.com
•Костецкий О.Г. ; пер. Речной 3 кв. 18 ;(044) 416-3473 oleg@citytel.com.ua
'. Алешин А. П. ул. Стельмаха 12 кв. 24 (044) 257-4561 . aleshiri@vic.com.ua
|_Валерианрв СА • ул. Герцена 23 кв. 15 (044)224-1816 valerian@rnail.rii
/Павленко А.В. ул. Строительная 15 кв. 43 1(044)212-5622 pavel@doors.com
Половцев Д.С. [ул. Потапова45 кв. 70 1Щ4) 143-3491 pplovtsev@mail.ru
:ПетровскийИ.A. i ул. Саксаганского 88 кв. 6
:
(044) 220-4571 petrovsky@mail.ru
.[Андрейченкр И.В. ; ул. Бассейная 3 кв. 15 ^(044)221-5413 irina@telpst.ry
;Голу60.П. i ул. Политехническая 4 кв. 95 I (044) 441-7878 ksenia@i.com.ua
'Киричков В.Л. !пр. Победы 2В кв^220 : (044) 440-8827 kirich@post.ua
Рис. 14.4. Результат выполнения запроса, структура которого представлена на
рис. 14.2, — это записи о 10 наиболее активных покупателях
7. Вернитесь в режим конструктора запросов и щелкните на кнопке Запуск па-
нели инструментов или выберите команду главного меню Запрос^Запуск. В не-
большом диалоговом окне программа Access сообщит о том, сколько записей
копируется в новую таблицу и запросит подтверждение на создание таблицы
(рис. 14.5). Щелкните на кнопке Да, чтобы завершить выполнение запроса.
Microsoft Office Access
В новую таблицу будет помещено следующее число записей 10.
После нажатия кнопки "Да" отмена изменений станет невозможна.
Подтвердите создание новой таблицы с выбранным* записями. :
Рис. 14.5. Подтвердите создание новой таблицы
8. Сохраните свой запрос на создание таблицы, указав подходящее имя.
9. Теперь, чтобы проверить полученные результаты, перейдите к окну базы данных
(например, нажав клавишу <F11>), щелкните на вкладке Таблицы и откройте но-
вую таблицу ДесяткаАктивныхПокупателей (рис. 14.6). Легко заметить, что ее вид
отличается от вида результирующей таблицы запроса, доступной в режиме табли-
цы (см. рис. 14.4): для данных денежного типа не поддерживается форматирова-
ние, а в качестве заголовков столбцов используются непосредственно имена по-
лей, а не их подписи. Причина таких различий заключается в том, что данные но-
вой таблицы не наследуют какие-либо свойства полей базовой таблицы.
аАктивныхПокупатепеи:
ИняПокулателй [ Адрес Телефон
545,82р.
190,98р.
169,46р.
180,16р.
152,88р.
116,52р
101,48р.
91^6р
Фоминых Л.И. ул. Горького 44 кв. 26 :0442691412 .larisa@link.com
Костецкий О.Г. : пер. Речной 3 кв. 1в 0444163473 oleg@citytel.corn.ua
Алешин А.П. ул. Стельмаха 12 кв 24 JQ442574561 aleshin@vic.com.ua
Валерианов С.А. ул. Герцена 23 кв. 15 0442241816 valerian@mail.ru
Павленко А.В. |ул. Строительная 15 кв. 43 0442125622 pavellgidpors.com
Половцев Д.С. ул. Потапова 45 кв. 70 '0444433491 pplpvtsev@mail.ru
ПетровскийИ.А. ул. Саксаганского 88 кв. 6 0442204571 petroysky@rnail.ru
Андрейченко И.В. ул. Бассейная 3 кв. 15 0442215413 irina@telpst.ru
Голуб О.П. -ул Политехническая 4 кв. 95 0444417S78 ksenia@i.com.ua
'Киричков В.П. ; пр. Победы 28 кв. 220 0444408827 kirich@post.ua
Рис. 14.6. Новая таблица не наследует свойства полей исходной таблицы
Глава 14. Автоматизация редактирования и управления данными 295
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
о Важно помнить о том, что запрос на создание таблицы позволяет сохранить в структуре
новой таблицы такие же типы данных и размеры полей, что и в исходной таблице запро-
са. Однако любые другие свойства полей (в том числе и настройки ключевых полей) не-
обходимо определять отдельно, открыв вновь созданную таблицу в режиме конструктора.
Запрос на добавление записей
Схема построения запроса на добавление записей имеет много общего со схемой
разработки запросов на создание таблицы. Записи из результирующего набора могут
быть добавлены как в таблицу уже открытой базы данных, так и в какую-либо другую
базу данных Access. Безусловно, структура запроса должна соответствовать структуре
таблицы-получателя. Чтобы продемонстрировать, каким образом создается запрос на
добавление записей в таблицу, предположим, что в базе данных уже созданы две таб-
лицы (ПрепаратыБайер и ПрепаратыГалена), в которых хранятся данные о препаратах
двух различных фирм. Таблицы имеют сходную структуру, однако у таблицы Препа-
ратыГалена на одно поле больше (ДатаРегистрации), и имена нескольких аналогич-
ных по своему информационному наполнению полей отличаются (рис. 14.7). Следует
объединить информацию о товарах, а точнее добавить записи одной таблицы
(ПрепаратыБайер)вовторую(ПрепаратыГалена).
Идентификатор товара, V ?.ски npjce
Название конкретного товара.
Форма. вь1пу!жа .Рретгара.тов. _ _
Имя производителя.
Цена товара.
счетчик
Текстовый
Гекстовый
Текстовый
Денежный
Логический
Наименование
ПекарственнаяФррма
Производитель
ДенаТоеара
НаличиеТовара Признак (наличия или отсутствия товара на складе. Значения: "Да"/"Нвт". _
НаименомниеТрвара
ЕдиницаИзмерения
Рис. 14.7. В структуре исходной и целевой таблиц есть некоторые различия
Q В том случае если необходимо добавить все записи одной таблицы в другую таблицу,
можно сделать это, используя команды Копировать и Вставить меню Правка и вы-
брав переключатель добавление данных в таблицу.
Чтобы построить запрос на добавление записей, выполните следующее.
1. Создайте новый запрос или выберите подходящий из уже существующих за-
просов на выборку.
2. В нашем примере бланк запроса включает все поля таблицы ПрепаратыБайер
(рис. 14.8).
3. Чтобы преобразовать запрос на выборку в запрос на добавление, выберите
команду ЗапросоДобавление или выберите из раскрывающегося списка
кнопки Тип запроса панели инструментов пункт Добавление. На экране поя-
вится диалоговое окно Добавление.
296 Часть IV. Создание и использование запросов
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
Sfa/вод на экран:
Уоюеие отбора:
или:
КодТовара
ПрепаратыБайер
И
••Ш1;
Наименование
ПрепаратыБак
0
•-•" 5™
1 ; -_=:? £ » ! 1МГ
ЛекарственнаяФор
ПрепаратыБайер
ё!
Производитель
ПрепаратыБай*
0
ЦенаТовар*
ПрепаратыЕ
0
НаличиеТовара и-
ЛрепаратыБайе -^
г
lj
M'tt'^'-V, Л
' . - . ' • - :
Рис. 14.8. Бланк исходного запроса на выборку записей из таблицы ПрепаратыБайер
4. Выберите из раскрывающегося списка поля Имя таблицы название той таблицы,
в которую необходимо добавить записи новой таблицы (для нашего примера это
таблица ПрепаратыГалена, как показано на рис. 14.9), затем примите предло-
женную по умолчанию опцию в текущей базе данных и щелкните на кнопке ОК.
Рис. 14.9. В диалоговом окне Добавление укажите имя
таблицы-получателя записей
В заголовке окна конструктора теперь указан другой тип запроса — на добавление,
а в бланке запроса появилась новая строка — Добавление (рис. 14.10). Обратите
внимание, что ячейки этой строки для столбцов Наименование и Лекарствен-
наяФорма не заполнены. Причина этого — несовпадение имен полей в бланке
запроса и таблице-получателе.
Рис. 14.10. В бланке исходного запроса на выборку появилась строка Добавление
| 5. Чтобы указать, в какие поля таблицы-получателя (ПрепаратыГалена) должны быть
добавлены данные из полей Наименование и ЛекарственнаяФорма исходной таб-
лицы ПрепаратыБайер, откройте раскрывающийся список в соответствующих
ячейках строки Добавление и выберите нужные имена полей (рис. 14.11).
Глава 14. Автоматизация редактирования и управления данными 297
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
При условии, что имена полей исходной таблицы, указанные в бланке запроса, совпа-
дают с именами тех полей, куда должны быть добавлены данные, программа Access по
умолчанию вносит эти имена в ячейки строки Добавление.
.
;Пода:
Имя таблицы:
Сортировка:
Добавление:
Условие отбора:
или:
КодТоеара
ПрепаратыБс
КодТовара
<i i
Наименование
ПрепаратыБайер
НаименоваииеТова
1екарственнаяФорм<
ПрепаратыБайер
:-:
ПрепаратыГапена.*
КодТовара
НаименосамиеТовара
ЕЕИШЙШЕИЯИ
Производитель
ЦенаТовара
НаличиеТовара
ДатаРегистрации
Производитель ЦенаТоеарг НаличиеТова^ —
ПрепэратыБайе Препараты! ПрепаратыБа! —
Производитель ЦенаТоварг НаличивТова£
:^МЩ^ • - ; »Г
Рис. 14.11. Имена полей таблицы-получателя, в которые будут добавлены данные из столб-
цов запроса, можно выбрать из раскрывающегося списка строки Добавление
7.
8.
Если записи исходной таблицы имеют ключевое поле с типом данных Счетчик и вы
хотите сохранить значения этого поля при добавлении записей в целевую таблицу,
обязательно включите его в бланк запроса.
Щелкните на кнопке Запуск панели инструментов или выберите команду
главного меню Запрос^Запуск. Программа Access сообщит о том, какое число
записей будет добавлено в таблицу. Щелкните на кнопке Да, чтобы завершить
выполнение запроса.
Если необходимо, сохраните запрос.
Чтобы проверить полученные результаты, перейдите к окну базы данных,
щелкните на вкладке Таблицы и откройте таблицу ПрепаратыГалена
(рис. 14.12). Поскольку в структуре исходной таблицы поле ДатаРегистрации
отсутствовало, у записей, добавленных в таблицу-получатель, данное поле ос-
талось незаполненным.
Код товара] Наименование {Лекарственная форма] I регистрации
Ш
I нимотоп
12 СТОПТУССИН
13 ЦИСТЕНАЛ
87 АЛКА-ЗЕЛЬЦЕР
88 АСПИРИН КАРДИО
89 МИКОСПОР
119 НИТРрФУНГИН
120 НОВО-ПАССИТ
121 НОВО-ПАССИТ
122 САНОРИН
123САНОРИН
124СТОПАНГИН
(Счетчик
30мг №100
табл. №20
10мл
шип. табл. №10
300 №20
крем 10 мг/г 15 п
25мл
р-р 100 мл фл
табл. п/о №10
каз спрей 0,1% 10 мл
эм 10 мл
р-р 100 мл
БАЙЕР
ГАЛЕНА
ГАПЕНА
БАЙЕР
БАЙЕР
БАЙЕР
ГАЛЕНА
ГАЛЕНА
ГАЛЕНА
ГАЛЕНА
ГАЛЕНА
ГАЛЕНА
239,00грн.
7/ифн.
;~ 5,ззгрнГ
7,80грн.
11,43грн.
56.90грн.
2,91грн.
8,72грн.
9,88грн.
4,52грн.
3,30грн.
И
0
И
•0
0
ш
в
0
0
0
Q
15-мар-2002
27-дек-2002
р7-мар-2С1р2
07-мар-2002
07-мар-2002
р7-мар-2002
07-мар-2002
07-мар-2002
Рис. 14.12. В таблицу ПрепаратыГалена добавлены новые записи
Запросы на удаление
Как и следует из названия, главное и единственное назначение запросов такого
типа — удалять из таблиц (или нескольких таблиц) записи, соответствующие опреде-
ленному критерию. Именно записи, а не значения отдельных полей, для удаления ко-
298 Часть IV. Создание и использованиезапросов
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
торых можно воспользоваться запросом на обновление. Применение запросов на уда-
ление обязывает быть предельно внимательным, поскольку удаление записей выпол-
няется без возможности их последующего восстановления. Увы, привычная "палочка-
выручалочка" (именуемая в Access кнопкой Отменить) здесь не спасает.
Порядок действий при создании запроса на удаление аналогичен приводимым
выше процедурам для других запросов на изменение.
Щ 1. Создайте запрос на выборку, результирующими записями которого должны
стать строки исходной таблицы, подлежащие удалению.
] 2. Перейдя в режим таблицы, убедитесь, что в результирующей таблице ото-
бражены именно те данные, которые следует удалить.
g] 3. Вернитесь в режим конструктора запросов и выберите команду Запрос^
Удаление или выберите из раскрывающегося списка кнопки Тип запроса пане-
ли инструментов пункт Удаление. Запрос на выборку будет преобразован в за-
прос на удаление (о чем теперь сообщается в заголовке окна конструктора),
а в бланке запроса вместо строки Сортировка появилась новая строка — Удаление.
Простой пример бланка запроса на удаление приведен на рис. 14.13.
Поле:
Имя таблицы:
.• Удаление:
Условие отборе:
или:
КодТовара
Товары
Условие
НаименееawieToeapa
Товары
Условие
ЕдиницаИзмерения
Товары
Условие
Производитель
Товары
Условие
ЦенаТовара
Товары
Условие
НаличиеТс—-
Товары — *.
Условие =<
!
;Ute"M"" |"берлин-хеми"
*hJ ! ' . : LJ - - . : : ' ' L^ii^skilllilli^ . ^
Рис. 14.13. Записи результирующего набора будут удалены из таблицы Товары
Щ 4. Щелкните на кнопке Запуск панели инструментов или выберите команду
главного меню Запрос^Запуск. Программа Access сообщит о том, сколько за-
писей будет удалено и запросит подтверждение операции. Щелкните на кноп-
ке Да, если вы готовы расстаться с указанными записями.
Таков сценарий удаления записей из одной, не связанной с другими таблицы. Од-
нако на практике таблицы базы данных, как правило, связаны между собой, и нали-
чие этих связей в схеме базы данных обязательно учитывается программой Access при
попытке удалить записи одной из связанных таблиц, о чем уже говорилось в главе 10,
раздел Обеспечение целостности данных в базе. Напомним, что в случае если между
таблицами определено отношение "один ко многим" и в диалоговом окне Изменение
связей установлен флажок опции каскадное удаление связанных записей, при удалении
записи в главной таблице автоматически будут удалены все связанные записи подчи-
ненной таблицы, даже если ее поля не фигурировали в бланке запроса на удаление.
Если флажок каскадного удаления не установлен, но для данного отношения между
таблицами опция Обеспечение целостности данных активизирована (как, например, для
таблиц Покупатели и Заказы, рис. 14.14), удалить записи из родительской таблицы Поку-
патели не удастся до тех пор, пока не будут удалены записи из подчиненной таблицы
Заказы. При попытке удаления записей программа Access выдает соответствующее пре-
дупреждение о наличии связанных записей в подчиненной таблице (рис. 14.15).
Глава 14. Автоматизацияредактирования и управления данными 299
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
у пателя >1 КодПокупателя
Рис. 14.14. Для связанных таблиц Покупатели
и Заказы обеспечивается целостностьданных
'деление или изменение записи невозможно. В таблице 'Заказы
1
имеются
связанные записи. '••'•'
Рис. 14.15. Программа Access сообщает о том, что уда-
ление записей невозможно, так как оно влечет за собой
нарушение целостности данных
Массовое обновление данных
Одно из простых средств массовой замены данных в таблице уже рассматривалось
в главе li: это замена значений по образцу с помощью команды Заменить. Однако
благодаря запросам на обновление операции замены можно выполнить значительно
быстрее и эффективнее. Такой запрос позволяет указать критерий отбора записей,
подлежащих обновлению, а также новые значения для одного или нескольких полей
исходной таблицы. Значения указанных полей будут изменены в тех записях исход-
ной таблицы, которые соответствуют записям результирующего набора. Запросы на
обновление позволяют с помощью одного выражения модифицировать сразу множе-
ство записей. Например, можно снизить или повысить стоимость доставки всех или
некоторой группы товаров на определенный процент.
Прежде, чем выполнить запрос, обновляющий данные, убедитесь в том, что изменения
затронут только требуемые записи. Для этого достаточно, указав все критерии отбора,
выполнить запрос на выборку и просмотреть в режиме таблицы результирующие записи.
Чтобы проиллюстрировать, как может быть использован запрос на обновление,
обратимся к простому примеру. Предположим, что необходимо снизить стоимость
всех товаров фирмы ГЕДЕОН РИХТЕР на 5%. Сам факт внесения изменений также
должен быть зафиксирован в таблице Товары: для этого в поле ДатаРегистрации вно-
сится дата обновления данных.
Чтобы внести изменения в записи таблицы, выполните следующее.
ЦЦ 1. Создайте новый запрос на выборку, результирующими записями которого
станут записи исходной таблицы, подлежащие изменению.
В нашем примере бланк запроса выглядит аналогично представленному на
рис. 14.16. Критерии отбора заданы для полей Производитель (должны быть
выбраны записи о товарах фирмы ГЕДЕОН РИХТЕР) и Актуальность
(будущие изменения вносятся только в актуальные записи).
Q
300 Часть IV. Создание и использование запросов
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
Условиеотбора: |"ГЕДЕОНРИХТЕР"
Рис. 14.16. Бланкисходногозапроса на выборку
| 2. Перейдите в режим таблицы и убедитесь, что в результирующей таблице ото-
бражены именно те данные, которые следует обновить. •
| 3. Чтобы преобразовать запрос на выборку в запрос на обновление, выберите
команду Запрос^Обновление или выберите из раскрывающегося списка
кнопки Тип запроса панели инструментов пункт Обновление.
Заголовок окна конструктора теперь сообщает о том, что запрос является за-
просом на обновление. Кроме того, в бланк запроса добавлена новая строка
Обновление.
4. Введите новые значения для обновляемых полей. Так, в ячейку строки
Обновление, соответствующую столбцу ЦенаТовара, следует ввести выраже-
ние [Товары]![ЦенаТовара]*0,95, а для столбца ДатаРегистрации указать но-
вую дату, например #15.12.02* (рис. 14.17).
Запрос!:запро
КодТшвра
НаименованиеТовара
|ЕдиницаИзмерения
.1 Производитель
Поле:
Иия таблицы:
Обновление:
Условие отбора:
или;;
Производитель
Товары
"ГЕДЕОН РИХТЕР"
<]•••• •___ . __.
ЦенаТовара
Товары
[ТоеарыМЦенаТсвара]*0, 95
' :J
НаличиеТовара
Товары
Актуальность
Товары
Да
ДатаРегистрации 1*
Товары J
#15,12.02*
:
—
Рис. 14.17. Бланк запроса на обновление: у записей, которые соответствуют критерию
отбора,будутизмененызначенияполейЦенаТовараиДатаРегистрации
Формально в бланке запроса на обновление достаточно указать только поля, для которых
указывается критерий отбора, и поля, значения которых должны быть модифицированы.
Программа Access сохранит запрос на обновление именно в таком виде (рис. 14.18).
i
Если в бланке запроса на обновление не указан критерий отбора записей (строка Ус-
ловие отбора остается пустой), при выполнении запроса будут модифицированы зна-
чения во всех записях таблицы.
Глава 14. Автоматизация редактирования и управления данными 301
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m
Поле;
Имя таблицы;
Обновление:
Условие отбора:
:.~. ...•: "•или:
1
ттЙТгтРпЗДН *'*•'
Товары
Товары 1ЦенаТовара*0,95
ДатаРегистрации
Товары
#15.12.02*
Производитель
Товары
Актуальность *-•
Товары Ж
ТЕДЕОН РИХТЕР" ; Да
Рис. 14.18. Более компактное представление бланка запроса на обновление
Щ 5. Щелкните на кнопке Запуск панели инструментов или выберите команду главного
меню Запрос<=>3апуск. Программа Access сообщит о том, какое число записей бу-
дет добавлено в таблицу. Щелкните на кнопке Да, чтобы завершить выполнение
запроса. Чтобы отменить операцию обновления, щелкните на кнопке Нет.
Как и в случае когда используются запросы на удаление, при выполнении запро-
сов на обновление записей связанных таблиц программа Access следит за тем, чтобы
не были нарушены условия целостности данных.
Если между таблицами определено отношение "один ко многим" и в диалоговом
окне Изменение связей установлен флажок опции каскадное обновление связанных полей,
при любом изменении данных первичного ключа в главной таблице автоматически
будут обновлены соответствующие значения в поле внешнего ключа подчиненной
таблицы. Целостность данных таким образом будет сохранена. В противном случае (если
флажок каскадного обновления не установлен, но для данного отношения активизиро-
вана опция Обеспечение целостности данных) при наличии связанных записей на сторо-
не "многие" модифицировать значение ключевого поля на стороне "один" нельзя.
Резюме
Эта глава посвящена запросам на изменение, с помощью которых можно удалить
записи, добавить новые, а также выполнить массовое обновление данных одной или
нескольких таблиц. Существует четыре типа запросов на изменение: на создание таб-
лицы, на добавление, удаление и обновление. При использовании любого запроса на
изменение рекомендуется создавать резервные копии изменяемых таблиц. Еще одна
мера безопасности — это предварительный просмотр результатов выполнения запроса
на выборку, который впоследствии будет преобразован в запрос на изменение.
Запрос на добавление вносит записи в уже существующую таблицу базы данных.
В том случае если записи результирующего набора должны стать самостоятельной
таблицей, используется запрос на создание таблицы. Поля новой таблицы наследуют
при этом тип данных и размеры полей исходной таблицы, указанной в бланке запроса
(или полей нескольких таблиц), однако все настройки форматирования, а также опре-
деление ключевых полей для новой таблицы должны быть заданы заново. Запросы на
обновление позволяют модифицировать значения отдельных полей записей, в то вре-
мя как запросы на изменение других типов оперируют исключительно с записями
таблиц. При выполнении запросов на удаление или обновление записей из связанных
таблиц программа Access контролирует соблюдение условий целостности данных.
Тесты
Проконтролируйте себя, ответив на вопросы следующих тестов. Ответы на них
указаны в приложении в конце книги.
Часть IV. Создание и использование запросов
C
lick
to
buy
N
O
W
!
PD F-XChange View
er
w
w
w
.docu-track.c
o
m
C
lick
to
buy
N
O
W
!
PD
F-XChange View
er
w
w
w
.docu-track.c
o
m

More Related Content

What's hot

тест работа с макросами и внешними данными
тест работа с макросами и внешними даннымитест работа с макросами и внешними данными
тест работа с макросами и внешними даннымиJIuc
 
Что нового в 47-53 итерация ИС ARTA Synergy
Что нового в 47-53 итерация ИС ARTA SynergyЧто нового в 47-53 итерация ИС ARTA Synergy
Что нового в 47-53 итерация ИС ARTA SynergyYerlan Kamyrov
 
Бази даних-1 (LibreOffice Base)
Бази даних-1 (LibreOffice Base)Бази даних-1 (LibreOffice Base)
Бази даних-1 (LibreOffice Base)s-lana
 
0024
00240024
0024JIuc
 
Упражнение 1
Упражнение 1Упражнение 1
Упражнение 1Artyukhova
 
раздел 5 субд Access
раздел 5  субд Accessраздел 5  субд Access
раздел 5 субд Accesstatianabtt
 
Workabox - Как создать в системе прайс-лист
Workabox - Как создать в системе прайс-листWorkabox - Как создать в системе прайс-лист
Workabox - Как создать в системе прайс-листWORKABOX
 
отчеты 12 класс
отчеты 12 классотчеты 12 класс
отчеты 12 классinnaivarlak
 
Partner Programm
Partner ProgrammPartner Programm
Partner ProgrammEva
 
тест запросы
тест запросытест запросы
тест запросыJIuc
 
Google docs
Google docsGoogle docs
Google docsGAIGNM
 
11 ms acces_приемы работыt
11 ms acces_приемы работыt11 ms acces_приемы работыt
11 ms acces_приемы работыtEvgeniy Golendyhin
 
4. Quick Sales. Модуль "Планы"
4. Quick Sales. Модуль "Планы"4. Quick Sales. Модуль "Планы"
4. Quick Sales. Модуль "Планы"Anastasia Solntseva
 
0037
00370037
0037JIuc
 
0030
00300030
0030JIuc
 
0013
00130013
0013JIuc
 
5. Quick Sales. Модуль "Сделки"
5. Quick Sales. Модуль "Сделки"5. Quick Sales. Модуль "Сделки"
5. Quick Sales. Модуль "Сделки"Anastasia Solntseva
 
0011
00110011
0011JIuc
 

What's hot (19)

тест работа с макросами и внешними данными
тест работа с макросами и внешними даннымитест работа с макросами и внешними данными
тест работа с макросами и внешними данными
 
Что нового в 47-53 итерация ИС ARTA Synergy
Что нового в 47-53 итерация ИС ARTA SynergyЧто нового в 47-53 итерация ИС ARTA Synergy
Что нового в 47-53 итерация ИС ARTA Synergy
 
B pwin&ramus
B pwin&ramusB pwin&ramus
B pwin&ramus
 
Бази даних-1 (LibreOffice Base)
Бази даних-1 (LibreOffice Base)Бази даних-1 (LibreOffice Base)
Бази даних-1 (LibreOffice Base)
 
0024
00240024
0024
 
Упражнение 1
Упражнение 1Упражнение 1
Упражнение 1
 
раздел 5 субд Access
раздел 5  субд Accessраздел 5  субд Access
раздел 5 субд Access
 
Workabox - Как создать в системе прайс-лист
Workabox - Как создать в системе прайс-листWorkabox - Как создать в системе прайс-лист
Workabox - Как создать в системе прайс-лист
 
отчеты 12 класс
отчеты 12 классотчеты 12 класс
отчеты 12 класс
 
Partner Programm
Partner ProgrammPartner Programm
Partner Programm
 
тест запросы
тест запросытест запросы
тест запросы
 
Google docs
Google docsGoogle docs
Google docs
 
11 ms acces_приемы работыt
11 ms acces_приемы работыt11 ms acces_приемы работыt
11 ms acces_приемы работыt
 
4. Quick Sales. Модуль "Планы"
4. Quick Sales. Модуль "Планы"4. Quick Sales. Модуль "Планы"
4. Quick Sales. Модуль "Планы"
 
0037
00370037
0037
 
0030
00300030
0030
 
0013
00130013
0013
 
5. Quick Sales. Модуль "Сделки"
5. Quick Sales. Модуль "Сделки"5. Quick Sales. Модуль "Сделки"
5. Quick Sales. Модуль "Сделки"
 
0011
00110011
0011
 

Viewers also liked

038
038038
038JIuc
 
лекция 12
лекция 12лекция 12
лекция 12JIuc
 
итоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвмитоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвмJIuc
 
042
042042
042JIuc
 
008
008008
008JIuc
 
урок 5
урок 5урок 5
урок 5JIuc
 
лекция 10
лекция 10лекция 10
лекция 10JIuc
 
0012
00120012
0012JIuc
 
0020
00200020
0020JIuc
 
0015
00150015
0015JIuc
 
урок 1
урок 1урок 1
урок 1JIuc
 
007
007007
007JIuc
 
001
001001
001JIuc
 
лекция 7
лекция 7лекция 7
лекция 7JIuc
 
лекция 17
лекция 17лекция 17
лекция 17JIuc
 
0028
00280028
0028JIuc
 

Viewers also liked (16)

038
038038
038
 
лекция 12
лекция 12лекция 12
лекция 12
 
итоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвмитоговый тест по дисциплине аппаратное обеспечение эвм
итоговый тест по дисциплине аппаратное обеспечение эвм
 
042
042042
042
 
008
008008
008
 
урок 5
урок 5урок 5
урок 5
 
лекция 10
лекция 10лекция 10
лекция 10
 
0012
00120012
0012
 
0020
00200020
0020
 
0015
00150015
0015
 
урок 1
урок 1урок 1
урок 1
 
007
007007
007
 
001
001001
001
 
лекция 7
лекция 7лекция 7
лекция 7
 
лекция 17
лекция 17лекция 17
лекция 17
 
0028
00280028
0028
 

Similar to 0031

методические указания
методические указанияметодические указания
методические указанияsveta-la
 
создание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страницсоздание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страницVladimir Burdaev
 
Клочков А. Автоматизация рассылки запросов потенциальным поставщикам средст...
Клочков А. Автоматизация  рассылки  запросов потенциальным поставщикам средст...Клочков А. Автоматизация  рассылки  запросов потенциальным поставщикам средст...
Клочков А. Автоматизация рассылки запросов потенциальным поставщикам средст...FMTeam
 
Microsoft access
Microsoft accessMicrosoft access
Microsoft accessDenoro55
 
0026
00260026
0026JIuc
 
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...Dmitry Andreev
 
Elastix call center_manual_ru
Elastix call center_manual_ruElastix call center_manual_ru
Elastix call center_manual_ruALPHONE.RU
 
0025
00250025
0025JIuc
 
Ирбис: Глобальная корректировка
Ирбис: Глобальная корректировкаИрбис: Глобальная корректировка
Ирбис: Глобальная корректировкаSoldatova Oksana
 
отчеты 12 класс
отчеты 12 классотчеты 12 класс
отчеты 12 классinnaivarlak
 
урок по информатике формы 12 класс
урок по информатике формы 12 классурок по информатике формы 12 класс
урок по информатике формы 12 классinnaivarlak
 
создание таблиц в Ms access
создание таблиц в Ms accessсоздание таблиц в Ms access
создание таблиц в Ms accesschiz123
 
Web forms tutorial
Web forms tutorialWeb forms tutorial
Web forms tutorialevpolov
 
субд Access
субд Accessсубд Access
субд AccessAndrewTar
 

Similar to 0031 (20)

Access 2000 1
Access 2000 1Access 2000 1
Access 2000 1
 
методические указания
методические указанияметодические указания
методические указания
 
создание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страницсоздание запросов, отчётов, Web страниц
создание запросов, отчётов, Web страниц
 
Клочков А. Автоматизация рассылки запросов потенциальным поставщикам средст...
Клочков А. Автоматизация  рассылки  запросов потенциальным поставщикам средст...Клочков А. Автоматизация  рассылки  запросов потенциальным поставщикам средст...
Клочков А. Автоматизация рассылки запросов потенциальным поставщикам средст...
 
Lekcia8
Lekcia8Lekcia8
Lekcia8
 
Microsoft access
Microsoft accessMicrosoft access
Microsoft access
 
Access 2
Access 2Access 2
Access 2
 
Excel05
Excel05Excel05
Excel05
 
0026
00260026
0026
 
создание таблиц в Ms Access
создание таблиц в Ms Accessсоздание таблиц в Ms Access
создание таблиц в Ms Access
 
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
Разработка, тестирование и развертывание баз данных в Visual Studio Team Syst...
 
Elastix call center_manual_ru
Elastix call center_manual_ruElastix call center_manual_ru
Elastix call center_manual_ru
 
0025
00250025
0025
 
Ирбис: Глобальная корректировка
Ирбис: Глобальная корректировкаИрбис: Глобальная корректировка
Ирбис: Глобальная корректировка
 
отчеты 12 класс
отчеты 12 классотчеты 12 класс
отчеты 12 класс
 
урок по информатике формы 12 класс
урок по информатике формы 12 классурок по информатике формы 12 класс
урок по информатике формы 12 класс
 
создание таблиц в Ms access
создание таблиц в Ms accessсоздание таблиц в Ms access
создание таблиц в Ms access
 
11 класс
11 класс11 класс
11 класс
 
Web forms tutorial
Web forms tutorialWeb forms tutorial
Web forms tutorial
 
субд Access
субд Accessсубд Access
субд Access
 

More from JIuc

выступление на совет директоров
выступление на совет директороввыступление на совет директоров
выступление на совет директоровJIuc
 
тест по теме системы счисления
тест по теме системы счислениятест по теме системы счисления
тест по теме системы счисленияJIuc
 
тест по теме компьютерные коммуникации
тест по теме компьютерные коммуникациитест по теме компьютерные коммуникации
тест по теме компьютерные коммуникацииJIuc
 
тест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвмтест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвмJIuc
 
тест по теме устройство компьютера (20 вопросов)
тест по теме  устройство компьютера (20 вопросов)тест по теме  устройство компьютера (20 вопросов)
тест по теме устройство компьютера (20 вопросов)JIuc
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениеJIuc
 
тест по теме основные устройства компьютера
тест по теме основные устройства компьютератест по теме основные устройства компьютера
тест по теме основные устройства компьютераJIuc
 
тесты сортировка в бд Excel
тесты сортировка в бд Excelтесты сортировка в бд Excel
тесты сортировка в бд ExcelJIuc
 
тест создание и модифиация структуры бд
тест создание и модифиация структуры бдтест создание и модифиация структуры бд
тест создание и модифиация структуры бдJIuc
 
тест система управления базами данных
тест система управления базами данныхтест система управления базами данных
тест система управления базами данныхJIuc
 
тест по Sql
тест по Sqlтест по Sql
тест по SqlJIuc
 
тест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрациятест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрацияJIuc
 
тест бд
тест бдтест бд
тест бдJIuc
 
тест база данных. основные функции
тест база данных. основные функциитест база данных. основные функции
тест база данных. основные функцииJIuc
 
тестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмтестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмJIuc
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуреJIuc
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуреJIuc
 
икр
икрикр
икрJIuc
 
тестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмтестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмJIuc
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системыJIuc
 

More from JIuc (20)

выступление на совет директоров
выступление на совет директороввыступление на совет директоров
выступление на совет директоров
 
тест по теме системы счисления
тест по теме системы счислениятест по теме системы счисления
тест по теме системы счисления
 
тест по теме компьютерные коммуникации
тест по теме компьютерные коммуникациитест по теме компьютерные коммуникации
тест по теме компьютерные коммуникации
 
тест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвмтест по теме аппаратное обеспечение эвм
тест по теме аппаратное обеспечение эвм
 
тест по теме устройство компьютера (20 вопросов)
тест по теме  устройство компьютера (20 вопросов)тест по теме  устройство компьютера (20 вопросов)
тест по теме устройство компьютера (20 вопросов)
 
тест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечениетест Atutor аппаратное обеспечение
тест Atutor аппаратное обеспечение
 
тест по теме основные устройства компьютера
тест по теме основные устройства компьютератест по теме основные устройства компьютера
тест по теме основные устройства компьютера
 
тесты сортировка в бд Excel
тесты сортировка в бд Excelтесты сортировка в бд Excel
тесты сортировка в бд Excel
 
тест создание и модифиация структуры бд
тест создание и модифиация структуры бдтест создание и модифиация структуры бд
тест создание и модифиация структуры бд
 
тест система управления базами данных
тест система управления базами данныхтест система управления базами данных
тест система управления базами данных
 
тест по Sql
тест по Sqlтест по Sql
тест по Sql
 
тест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрациятест ключи, связи, индексы поиск и фильтрация
тест ключи, связи, индексы поиск и фильтрация
 
тест бд
тест бдтест бд
тест бд
 
тест база данных. основные функции
тест база данных. основные функциитест база данных. основные функции
тест база данных. основные функции
 
тестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмтестирование по разделу архитектура эвм
тестирование по разделу архитектура эвм
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуре
 
тест треннинг по архитектуре
тест треннинг по архитектуретест треннинг по архитектуре
тест треннинг по архитектуре
 
икр
икрикр
икр
 
тестирование по разделу архитектура эвм
тестирование по разделу архитектура эвмтестирование по разделу архитектура эвм
тестирование по разделу архитектура эвм
 
тест по теме микропроцессорные системы
тест по теме микропроцессорные системытест по теме микропроцессорные системы
тест по теме микропроцессорные системы
 

0031

  • 1. Глава 14 Автоматизация редактирования и управления данными В этой главе... * Общая информация о запросах на изменение 4 Запрос на создание таблицы ф Запрос на добавление записей Ф Запросы на удаление ф Массовое обновление данных Ф Резюме 4 Тесты Общая информация о запросах на изменение До настоящего момента любые правки в таблицы вносились в режиме просмотра таблицы. Однако понятно, что при обслуживании реальных баз данных должны быть предусмотрены иные механизмы, автоматизирующие модификацию большого числа записей в таблицах. Таким механизмом в Microsoft Access 2003 являются запросы на изменение. К запросам на изменение, как уже отмечалось, относятся запросы на уда- ление, обновление, добавление записей и создание таблицы. Основой для любого запроса на изменение служит обычный запрос на выборку, оп- ределяющий ту группу записей, над которыми будут выполнены некоторые действия. Поэтому при создании запроса на изменение сначала необходимо построить (в режиме конструктора или с помощью мастера) запрос на выборку, а затем изменить в режиме конструктора его тип. Сделать это можно, выбрав подходящий тип запроса с помощью кнопки Тип запроса панели Конструктор запросов (рис. 14.1) или из меню Запрос. t3- Так как запросы на изменение уже не просто осуществляют выборку опреде- ленной информации из таблиц, а модифицируют хранимые в них данные, привычная схема работы с запросом должна несколько измениться. Прежде, когда речь шла о "чистых" запросах на выборку, после создания запроса можно было смело щелкать на кнопке Запуск, не опасаясь за последствия та- кого шага. В случае с запросами на изменение ситуация кардинально отлича- ется, так как команда Запуск сразу изменяет данные. Вернуть таблицу к ис- ходному виду невозможно. Единственный путь — обратиться к резервной ко- пии таблицы, ставшей "жертвой" вашего эксперимента. Поэтому, чтобы предотвратить потерю важных данных, перед запуском любого запроса такого типа воспользуйтесь кнопкой Режим таблицы (одна из опций кнопки Вид па- нели инструментов окна конструктора), чтобы просмотреть те изменения, ко- торые ожидают таблицу в результате выполнения запроса. • C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 2. Файл [Травка Вид Вставка Ззгцэос Сервис Окно ^правк ',.' ": ' ' ' ' | f i % Выборка Перекрестный КодЗаказэ ДатаЗаказа СодПокупателя .''ияПолучателя Кмэтм КодТовара ЦенаТоеара тво QBMMMM Добавление... Ж Удаление Попе: Имятаблицы: Ссртироека: Вьвод на жран; Услоеие отбора: СуммаЗаказа: СодержанивЗаказов!Цен< Рис. 14.1. В режиме конструктора можно выбрать тип запроса на изменение: каждый из них отмечен собственной пиктограммой, дополненной восклицательнымзнаком Чтобы обезопасить в равной степени и себя (как лицо, ответственное за данные), ii непосредственно данные, которые подлежат изменению, при работе с запросами на изменение не забывайте делать ^резервные копии исходных таблиц (см. подраздел Копирование таблиц в базе данных главы 6). Запрос на создание таблицы Запрос такого типа выполняется в два этапа: сначала осуществляется выборка не- обходимых записей, а затем на основе данных, полученных в результате этого запро- са, создается новая таблица для текущей или какой-либо другой базы данных Micro- soft Access. Одно из применений таких запросов — выделение некоторого подмноже- ства записей, удовлетворяющих определенным условиям отбора, из одной или нескольких таблиц для их последующего анализа или обработки. Предположим, фирма-владелец I'nternet-аптеки собирается премировать 10 своих наиболее активных зарегистрированных покупателей, т.е. тех клиентов, которые за весь период обслуживания оформили заказы на наибольшую сумму. Чтобы удобнее было работать с этими покупателями (например, сообщать им о предоставленных компанией определенных скидках), сведения о них должны быть размещены в от- дельной таблице. Поэтому логично решить такую задачу, обратившись к запросу на создание таблицы. В запросе на выборку, который послужит основой для создания новой таблицы, рассчитывается общая сумма, на которую покупателями были сдела- ны заказы, затем результирующие записи сортируются, и в итоговую таблицу поме- щаются десять первых записей. Последовательность действий при построении запроса на создание таблицы будет следующей. 1. Создайте новый запрос или выберите подходящий из уже существующих запро- сов на выборку. В нашем примере в запросе участвуют поля трех связанных таблиц: Покупатели, Заказы и СодержаниеЗаказов. Вычисляемое (оно же итоговое) поле — Сумма- Заказа — рассчитывается по уже знакомой формуле: СуммаЗаказа: Зит((СодержаниеЗаказов!ЦенаТовара)*(СодержаниеЗаказов!Количество)). Глава 14. Автоматизация редактирования и управления данными 293 C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 3. 12. Чтобы в результирующую таблицу были включены только 10 первых записей, щелкните в списке Набор значений (справа от кнопки Групповые операции на панели инструментов Конструктор запросов) и введите значение 10 в поле ввода. Бланк запроса будет выглядеть аналогично представленному на рис. 14.2. KgMicrosoftAccess -[ЗапросСоздание7а6лицы_Десят«аАктив«як :запросмавыборку], Файл Главка Щид Вставка Запрос Сервис Окно Справка - - в X * -J jj Пароль ИмяПокупателя Адрес Телефон ЭлектронныйАдрес Актуальность ДэтаРегистрации КодЗакааа ДатаЗаказа КолПокупателя ИняПолучателя АдресПолучателя ТвлефонПолучателя JJJ КодЗакаэа КодТоварв ЦенаТовара Количество Актуальность ДатаРегистрации =1 Поле; Имятаблицы: Групповая операция: Сортировка: Вывод на экран; Условие отбора: или: СуммаЗаказа: 5ит((Содер: выражение по убыванию т <J_i ИмяПокупателя Покупатели Группировка в Адрес Покупатели Группировка 0 Телефон Покупатели Группировка 0 , : ЭлектронныйАдрес Покупатели Группировка & Актуальность—*! Покупатели — J Группировка , d i ::::••• -..*:;=# Рис. 14.2. Бланк исходного запроса на выборку Ц 3. Выберите команду ЗапросоСоздание таблицы или воспользуйтесь для выбора типа запроса (на создание таблицы) кнопкой Тип запроса панели инструмен- тов. На экране появится диалоговое окно Создание таблицы (рис. 14.3). Создание таблицы ! имя таблицы: |десяткаАктивныхПокупателей | <• в текущей базе данных '• f в другой бе» данных: .< Рис. 14.3. Диалоговое окно создания таблицы 4. Введите в поле Имя таблицы название новой таблицы, примите предложенную по умолчанию опцию в текущей базе данных и щелкните на кнопке ОК. В заголовке окна конструктора теперь указан другой тип запроса — на создание таблицы. Если таблица создается для другой базы данных, выберите опцию в другой базе данных и введите в поле имя файла полное имя файла базы данных или щелкните на кнопке Обзор для поиска требуемого файла. 5. Проверьте правильность заполнения бланка запроса (в частности, выводится ли строка Групповая операция) и внесите в случае необходимости нужные изменения. 6. Чтобы убедиться, что результирующая таблица включает именно те данные, которые необходимы для новой таблицы, воспользуйтесь для предваритель- ного просмотра режимом таблицы (рис. 14.4). 294 Часть IV. Создание и использование запросов C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 4. ||P ЗапрасСозданиеТа6пицы_ДегяткаАктивньш: запрос «а Имя покупателя Адрес j Электронный адр 745.83грн. 545.82грн~ 19р.98грн. 169,46грн! 160,16грн. 152,88грн. 116,52грн. 101.48грн. 91,861 (Фоминых Л.И. ул. Горького 44 кв. 26 : (044) 269-1412 ,larisa@link.com •Костецкий О.Г. ; пер. Речной 3 кв. 18 ;(044) 416-3473 oleg@citytel.com.ua '. Алешин А. П. ул. Стельмаха 12 кв. 24 (044) 257-4561 . aleshiri@vic.com.ua |_Валерианрв СА • ул. Герцена 23 кв. 15 (044)224-1816 valerian@rnail.rii /Павленко А.В. ул. Строительная 15 кв. 43 1(044)212-5622 pavel@doors.com Половцев Д.С. [ул. Потапова45 кв. 70 1Щ4) 143-3491 pplovtsev@mail.ru :ПетровскийИ.A. i ул. Саксаганского 88 кв. 6 : (044) 220-4571 petrovsky@mail.ru .[Андрейченкр И.В. ; ул. Бассейная 3 кв. 15 ^(044)221-5413 irina@telpst.ry ;Голу60.П. i ул. Политехническая 4 кв. 95 I (044) 441-7878 ksenia@i.com.ua 'Киричков В.Л. !пр. Победы 2В кв^220 : (044) 440-8827 kirich@post.ua Рис. 14.4. Результат выполнения запроса, структура которого представлена на рис. 14.2, — это записи о 10 наиболее активных покупателях 7. Вернитесь в режим конструктора запросов и щелкните на кнопке Запуск па- нели инструментов или выберите команду главного меню Запрос^Запуск. В не- большом диалоговом окне программа Access сообщит о том, сколько записей копируется в новую таблицу и запросит подтверждение на создание таблицы (рис. 14.5). Щелкните на кнопке Да, чтобы завершить выполнение запроса. Microsoft Office Access В новую таблицу будет помещено следующее число записей 10. После нажатия кнопки "Да" отмена изменений станет невозможна. Подтвердите создание новой таблицы с выбранным* записями. : Рис. 14.5. Подтвердите создание новой таблицы 8. Сохраните свой запрос на создание таблицы, указав подходящее имя. 9. Теперь, чтобы проверить полученные результаты, перейдите к окну базы данных (например, нажав клавишу <F11>), щелкните на вкладке Таблицы и откройте но- вую таблицу ДесяткаАктивныхПокупателей (рис. 14.6). Легко заметить, что ее вид отличается от вида результирующей таблицы запроса, доступной в режиме табли- цы (см. рис. 14.4): для данных денежного типа не поддерживается форматирова- ние, а в качестве заголовков столбцов используются непосредственно имена по- лей, а не их подписи. Причина таких различий заключается в том, что данные но- вой таблицы не наследуют какие-либо свойства полей базовой таблицы. аАктивныхПокупатепеи: ИняПокулателй [ Адрес Телефон 545,82р. 190,98р. 169,46р. 180,16р. 152,88р. 116,52р 101,48р. 91^6р Фоминых Л.И. ул. Горького 44 кв. 26 :0442691412 .larisa@link.com Костецкий О.Г. : пер. Речной 3 кв. 1в 0444163473 oleg@citytel.corn.ua Алешин А.П. ул. Стельмаха 12 кв 24 JQ442574561 aleshin@vic.com.ua Валерианов С.А. ул. Герцена 23 кв. 15 0442241816 valerian@mail.ru Павленко А.В. |ул. Строительная 15 кв. 43 0442125622 pavellgidpors.com Половцев Д.С. ул. Потапова 45 кв. 70 '0444433491 pplpvtsev@mail.ru ПетровскийИ.А. ул. Саксаганского 88 кв. 6 0442204571 petroysky@rnail.ru Андрейченко И.В. ул. Бассейная 3 кв. 15 0442215413 irina@telpst.ru Голуб О.П. -ул Политехническая 4 кв. 95 0444417S78 ksenia@i.com.ua 'Киричков В.П. ; пр. Победы 28 кв. 220 0444408827 kirich@post.ua Рис. 14.6. Новая таблица не наследует свойства полей исходной таблицы Глава 14. Автоматизация редактирования и управления данными 295 C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 5. о Важно помнить о том, что запрос на создание таблицы позволяет сохранить в структуре новой таблицы такие же типы данных и размеры полей, что и в исходной таблице запро- са. Однако любые другие свойства полей (в том числе и настройки ключевых полей) не- обходимо определять отдельно, открыв вновь созданную таблицу в режиме конструктора. Запрос на добавление записей Схема построения запроса на добавление записей имеет много общего со схемой разработки запросов на создание таблицы. Записи из результирующего набора могут быть добавлены как в таблицу уже открытой базы данных, так и в какую-либо другую базу данных Access. Безусловно, структура запроса должна соответствовать структуре таблицы-получателя. Чтобы продемонстрировать, каким образом создается запрос на добавление записей в таблицу, предположим, что в базе данных уже созданы две таб- лицы (ПрепаратыБайер и ПрепаратыГалена), в которых хранятся данные о препаратах двух различных фирм. Таблицы имеют сходную структуру, однако у таблицы Препа- ратыГалена на одно поле больше (ДатаРегистрации), и имена нескольких аналогич- ных по своему информационному наполнению полей отличаются (рис. 14.7). Следует объединить информацию о товарах, а точнее добавить записи одной таблицы (ПрепаратыБайер)вовторую(ПрепаратыГалена). Идентификатор товара, V ?.ски npjce Название конкретного товара. Форма. вь1пу!жа .Рретгара.тов. _ _ Имя производителя. Цена товара. счетчик Текстовый Гекстовый Текстовый Денежный Логический Наименование ПекарственнаяФррма Производитель ДенаТоеара НаличиеТовара Признак (наличия или отсутствия товара на складе. Значения: "Да"/"Нвт". _ НаименомниеТрвара ЕдиницаИзмерения Рис. 14.7. В структуре исходной и целевой таблиц есть некоторые различия Q В том случае если необходимо добавить все записи одной таблицы в другую таблицу, можно сделать это, используя команды Копировать и Вставить меню Правка и вы- брав переключатель добавление данных в таблицу. Чтобы построить запрос на добавление записей, выполните следующее. 1. Создайте новый запрос или выберите подходящий из уже существующих за- просов на выборку. 2. В нашем примере бланк запроса включает все поля таблицы ПрепаратыБайер (рис. 14.8). 3. Чтобы преобразовать запрос на выборку в запрос на добавление, выберите команду ЗапросоДобавление или выберите из раскрывающегося списка кнопки Тип запроса панели инструментов пункт Добавление. На экране поя- вится диалоговое окно Добавление. 296 Часть IV. Создание и использование запросов C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 6. Sfa/вод на экран: Уоюеие отбора: или: КодТовара ПрепаратыБайер И ••Ш1; Наименование ПрепаратыБак 0 •-•" 5™ 1 ; -_=:? £ » ! 1МГ ЛекарственнаяФор ПрепаратыБайер ё! Производитель ПрепаратыБай* 0 ЦенаТовар* ПрепаратыЕ 0 НаличиеТовара и- ЛрепаратыБайе -^ г lj M'tt'^'-V, Л ' . - . ' • - : Рис. 14.8. Бланк исходного запроса на выборку записей из таблицы ПрепаратыБайер 4. Выберите из раскрывающегося списка поля Имя таблицы название той таблицы, в которую необходимо добавить записи новой таблицы (для нашего примера это таблица ПрепаратыГалена, как показано на рис. 14.9), затем примите предло- женную по умолчанию опцию в текущей базе данных и щелкните на кнопке ОК. Рис. 14.9. В диалоговом окне Добавление укажите имя таблицы-получателя записей В заголовке окна конструктора теперь указан другой тип запроса — на добавление, а в бланке запроса появилась новая строка — Добавление (рис. 14.10). Обратите внимание, что ячейки этой строки для столбцов Наименование и Лекарствен- наяФорма не заполнены. Причина этого — несовпадение имен полей в бланке запроса и таблице-получателе. Рис. 14.10. В бланке исходного запроса на выборку появилась строка Добавление | 5. Чтобы указать, в какие поля таблицы-получателя (ПрепаратыГалена) должны быть добавлены данные из полей Наименование и ЛекарственнаяФорма исходной таб- лицы ПрепаратыБайер, откройте раскрывающийся список в соответствующих ячейках строки Добавление и выберите нужные имена полей (рис. 14.11). Глава 14. Автоматизация редактирования и управления данными 297 C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 7. При условии, что имена полей исходной таблицы, указанные в бланке запроса, совпа- дают с именами тех полей, куда должны быть добавлены данные, программа Access по умолчанию вносит эти имена в ячейки строки Добавление. . ;Пода: Имя таблицы: Сортировка: Добавление: Условие отбора: или: КодТоеара ПрепаратыБс КодТовара <i i Наименование ПрепаратыБайер НаименоваииеТова 1екарственнаяФорм< ПрепаратыБайер :-: ПрепаратыГапена.* КодТовара НаименосамиеТовара ЕЕИШЙШЕИЯИ Производитель ЦенаТовара НаличиеТовара ДатаРегистрации Производитель ЦенаТоеарг НаличиеТова^ — ПрепэратыБайе Препараты! ПрепаратыБа! — Производитель ЦенаТоварг НаличивТова£ :^МЩ^ • - ; »Г Рис. 14.11. Имена полей таблицы-получателя, в которые будут добавлены данные из столб- цов запроса, можно выбрать из раскрывающегося списка строки Добавление 7. 8. Если записи исходной таблицы имеют ключевое поле с типом данных Счетчик и вы хотите сохранить значения этого поля при добавлении записей в целевую таблицу, обязательно включите его в бланк запроса. Щелкните на кнопке Запуск панели инструментов или выберите команду главного меню Запрос^Запуск. Программа Access сообщит о том, какое число записей будет добавлено в таблицу. Щелкните на кнопке Да, чтобы завершить выполнение запроса. Если необходимо, сохраните запрос. Чтобы проверить полученные результаты, перейдите к окну базы данных, щелкните на вкладке Таблицы и откройте таблицу ПрепаратыГалена (рис. 14.12). Поскольку в структуре исходной таблицы поле ДатаРегистрации отсутствовало, у записей, добавленных в таблицу-получатель, данное поле ос- талось незаполненным. Код товара] Наименование {Лекарственная форма] I регистрации Ш I нимотоп 12 СТОПТУССИН 13 ЦИСТЕНАЛ 87 АЛКА-ЗЕЛЬЦЕР 88 АСПИРИН КАРДИО 89 МИКОСПОР 119 НИТРрФУНГИН 120 НОВО-ПАССИТ 121 НОВО-ПАССИТ 122 САНОРИН 123САНОРИН 124СТОПАНГИН (Счетчик 30мг №100 табл. №20 10мл шип. табл. №10 300 №20 крем 10 мг/г 15 п 25мл р-р 100 мл фл табл. п/о №10 каз спрей 0,1% 10 мл эм 10 мл р-р 100 мл БАЙЕР ГАЛЕНА ГАПЕНА БАЙЕР БАЙЕР БАЙЕР ГАЛЕНА ГАЛЕНА ГАЛЕНА ГАЛЕНА ГАЛЕНА ГАЛЕНА 239,00грн. 7/ифн. ;~ 5,ззгрнГ 7,80грн. 11,43грн. 56.90грн. 2,91грн. 8,72грн. 9,88грн. 4,52грн. 3,30грн. И 0 И •0 0 ш в 0 0 0 Q 15-мар-2002 27-дек-2002 р7-мар-2С1р2 07-мар-2002 07-мар-2002 р7-мар-2002 07-мар-2002 07-мар-2002 Рис. 14.12. В таблицу ПрепаратыГалена добавлены новые записи Запросы на удаление Как и следует из названия, главное и единственное назначение запросов такого типа — удалять из таблиц (или нескольких таблиц) записи, соответствующие опреде- ленному критерию. Именно записи, а не значения отдельных полей, для удаления ко- 298 Часть IV. Создание и использованиезапросов C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 8. торых можно воспользоваться запросом на обновление. Применение запросов на уда- ление обязывает быть предельно внимательным, поскольку удаление записей выпол- няется без возможности их последующего восстановления. Увы, привычная "палочка- выручалочка" (именуемая в Access кнопкой Отменить) здесь не спасает. Порядок действий при создании запроса на удаление аналогичен приводимым выше процедурам для других запросов на изменение. Щ 1. Создайте запрос на выборку, результирующими записями которого должны стать строки исходной таблицы, подлежащие удалению. ] 2. Перейдя в режим таблицы, убедитесь, что в результирующей таблице ото- бражены именно те данные, которые следует удалить. g] 3. Вернитесь в режим конструктора запросов и выберите команду Запрос^ Удаление или выберите из раскрывающегося списка кнопки Тип запроса пане- ли инструментов пункт Удаление. Запрос на выборку будет преобразован в за- прос на удаление (о чем теперь сообщается в заголовке окна конструктора), а в бланке запроса вместо строки Сортировка появилась новая строка — Удаление. Простой пример бланка запроса на удаление приведен на рис. 14.13. Поле: Имя таблицы: .• Удаление: Условие отборе: или: КодТовара Товары Условие НаименееawieToeapa Товары Условие ЕдиницаИзмерения Товары Условие Производитель Товары Условие ЦенаТовара Товары Условие НаличиеТс—- Товары — *. Условие =< ! ;Ute"M"" |"берлин-хеми" *hJ ! ' . : LJ - - . : : ' ' L^ii^skilllilli^ . ^ Рис. 14.13. Записи результирующего набора будут удалены из таблицы Товары Щ 4. Щелкните на кнопке Запуск панели инструментов или выберите команду главного меню Запрос^Запуск. Программа Access сообщит о том, сколько за- писей будет удалено и запросит подтверждение операции. Щелкните на кноп- ке Да, если вы готовы расстаться с указанными записями. Таков сценарий удаления записей из одной, не связанной с другими таблицы. Од- нако на практике таблицы базы данных, как правило, связаны между собой, и нали- чие этих связей в схеме базы данных обязательно учитывается программой Access при попытке удалить записи одной из связанных таблиц, о чем уже говорилось в главе 10, раздел Обеспечение целостности данных в базе. Напомним, что в случае если между таблицами определено отношение "один ко многим" и в диалоговом окне Изменение связей установлен флажок опции каскадное удаление связанных записей, при удалении записи в главной таблице автоматически будут удалены все связанные записи подчи- ненной таблицы, даже если ее поля не фигурировали в бланке запроса на удаление. Если флажок каскадного удаления не установлен, но для данного отношения между таблицами опция Обеспечение целостности данных активизирована (как, например, для таблиц Покупатели и Заказы, рис. 14.14), удалить записи из родительской таблицы Поку- патели не удастся до тех пор, пока не будут удалены записи из подчиненной таблицы Заказы. При попытке удаления записей программа Access выдает соответствующее пре- дупреждение о наличии связанных записей в подчиненной таблице (рис. 14.15). Глава 14. Автоматизацияредактирования и управления данными 299 C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 9. у пателя >1 КодПокупателя Рис. 14.14. Для связанных таблиц Покупатели и Заказы обеспечивается целостностьданных 'деление или изменение записи невозможно. В таблице 'Заказы 1 имеются связанные записи. '••'•' Рис. 14.15. Программа Access сообщает о том, что уда- ление записей невозможно, так как оно влечет за собой нарушение целостности данных Массовое обновление данных Одно из простых средств массовой замены данных в таблице уже рассматривалось в главе li: это замена значений по образцу с помощью команды Заменить. Однако благодаря запросам на обновление операции замены можно выполнить значительно быстрее и эффективнее. Такой запрос позволяет указать критерий отбора записей, подлежащих обновлению, а также новые значения для одного или нескольких полей исходной таблицы. Значения указанных полей будут изменены в тех записях исход- ной таблицы, которые соответствуют записям результирующего набора. Запросы на обновление позволяют с помощью одного выражения модифицировать сразу множе- ство записей. Например, можно снизить или повысить стоимость доставки всех или некоторой группы товаров на определенный процент. Прежде, чем выполнить запрос, обновляющий данные, убедитесь в том, что изменения затронут только требуемые записи. Для этого достаточно, указав все критерии отбора, выполнить запрос на выборку и просмотреть в режиме таблицы результирующие записи. Чтобы проиллюстрировать, как может быть использован запрос на обновление, обратимся к простому примеру. Предположим, что необходимо снизить стоимость всех товаров фирмы ГЕДЕОН РИХТЕР на 5%. Сам факт внесения изменений также должен быть зафиксирован в таблице Товары: для этого в поле ДатаРегистрации вно- сится дата обновления данных. Чтобы внести изменения в записи таблицы, выполните следующее. ЦЦ 1. Создайте новый запрос на выборку, результирующими записями которого станут записи исходной таблицы, подлежащие изменению. В нашем примере бланк запроса выглядит аналогично представленному на рис. 14.16. Критерии отбора заданы для полей Производитель (должны быть выбраны записи о товарах фирмы ГЕДЕОН РИХТЕР) и Актуальность (будущие изменения вносятся только в актуальные записи). Q 300 Часть IV. Создание и использование запросов C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 10. Условиеотбора: |"ГЕДЕОНРИХТЕР" Рис. 14.16. Бланкисходногозапроса на выборку | 2. Перейдите в режим таблицы и убедитесь, что в результирующей таблице ото- бражены именно те данные, которые следует обновить. • | 3. Чтобы преобразовать запрос на выборку в запрос на обновление, выберите команду Запрос^Обновление или выберите из раскрывающегося списка кнопки Тип запроса панели инструментов пункт Обновление. Заголовок окна конструктора теперь сообщает о том, что запрос является за- просом на обновление. Кроме того, в бланк запроса добавлена новая строка Обновление. 4. Введите новые значения для обновляемых полей. Так, в ячейку строки Обновление, соответствующую столбцу ЦенаТовара, следует ввести выраже- ние [Товары]![ЦенаТовара]*0,95, а для столбца ДатаРегистрации указать но- вую дату, например #15.12.02* (рис. 14.17). Запрос!:запро КодТшвра НаименованиеТовара |ЕдиницаИзмерения .1 Производитель Поле: Иия таблицы: Обновление: Условие отбора: или;; Производитель Товары "ГЕДЕОН РИХТЕР" <]•••• •___ . __. ЦенаТовара Товары [ТоеарыМЦенаТсвара]*0, 95 ' :J НаличиеТовара Товары Актуальность Товары Да ДатаРегистрации 1* Товары J #15,12.02* : — Рис. 14.17. Бланк запроса на обновление: у записей, которые соответствуют критерию отбора,будутизмененызначенияполейЦенаТовараиДатаРегистрации Формально в бланке запроса на обновление достаточно указать только поля, для которых указывается критерий отбора, и поля, значения которых должны быть модифицированы. Программа Access сохранит запрос на обновление именно в таком виде (рис. 14.18). i Если в бланке запроса на обновление не указан критерий отбора записей (строка Ус- ловие отбора остается пустой), при выполнении запроса будут модифицированы зна- чения во всех записях таблицы. Глава 14. Автоматизация редактирования и управления данными 301 C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m
  • 11. Поле; Имя таблицы; Обновление: Условие отбора: :.~. ...•: "•или: 1 ттЙТгтРпЗДН *'*•' Товары Товары 1ЦенаТовара*0,95 ДатаРегистрации Товары #15.12.02* Производитель Товары Актуальность *-• Товары Ж ТЕДЕОН РИХТЕР" ; Да Рис. 14.18. Более компактное представление бланка запроса на обновление Щ 5. Щелкните на кнопке Запуск панели инструментов или выберите команду главного меню Запрос<=>3апуск. Программа Access сообщит о том, какое число записей бу- дет добавлено в таблицу. Щелкните на кнопке Да, чтобы завершить выполнение запроса. Чтобы отменить операцию обновления, щелкните на кнопке Нет. Как и в случае когда используются запросы на удаление, при выполнении запро- сов на обновление записей связанных таблиц программа Access следит за тем, чтобы не были нарушены условия целостности данных. Если между таблицами определено отношение "один ко многим" и в диалоговом окне Изменение связей установлен флажок опции каскадное обновление связанных полей, при любом изменении данных первичного ключа в главной таблице автоматически будут обновлены соответствующие значения в поле внешнего ключа подчиненной таблицы. Целостность данных таким образом будет сохранена. В противном случае (если флажок каскадного обновления не установлен, но для данного отношения активизиро- вана опция Обеспечение целостности данных) при наличии связанных записей на сторо- не "многие" модифицировать значение ключевого поля на стороне "один" нельзя. Резюме Эта глава посвящена запросам на изменение, с помощью которых можно удалить записи, добавить новые, а также выполнить массовое обновление данных одной или нескольких таблиц. Существует четыре типа запросов на изменение: на создание таб- лицы, на добавление, удаление и обновление. При использовании любого запроса на изменение рекомендуется создавать резервные копии изменяемых таблиц. Еще одна мера безопасности — это предварительный просмотр результатов выполнения запроса на выборку, который впоследствии будет преобразован в запрос на изменение. Запрос на добавление вносит записи в уже существующую таблицу базы данных. В том случае если записи результирующего набора должны стать самостоятельной таблицей, используется запрос на создание таблицы. Поля новой таблицы наследуют при этом тип данных и размеры полей исходной таблицы, указанной в бланке запроса (или полей нескольких таблиц), однако все настройки форматирования, а также опре- деление ключевых полей для новой таблицы должны быть заданы заново. Запросы на обновление позволяют модифицировать значения отдельных полей записей, в то вре- мя как запросы на изменение других типов оперируют исключительно с записями таблиц. При выполнении запросов на удаление или обновление записей из связанных таблиц программа Access контролирует соблюдение условий целостности данных. Тесты Проконтролируйте себя, ответив на вопросы следующих тестов. Ответы на них указаны в приложении в конце книги. Часть IV. Создание и использование запросов C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m C lick to buy N O W ! PD F-XChange View er w w w .docu-track.c o m