Запросы-обновления позволяют изменить значение выбранного поля по всем записям таблицы, удовлетворяющим определенным условиям.
Например, есть таблица:
Поставляемые товары
Код предприятия Код товара Минимальная партия Цена |
Предположим, что предприятие 1 решило увеличить на 10% цены на товары 1 и 3. Нам необходимо скорректировать цену на указанные изделия в таблице.
Для этого:
добавляем в окно Конструктора нового запроса таблицу Поставляемые товары.
выбираем команду Запрос/Обновление.
создаем следующий бланк запроса.
Поле |
Цена |
Код товара |
Код предприятия |
Имя таблицы |
Поставляемые товары |
Пост.товар |
Пост.товар |
Обновление |
[пост.товар]![цена]*1,1 |
|
|
Условие отбора |
|
1 or 3 |
1 |
перейти в режим таблицы для просмотра правильности заданной выборки (цены, которые мы видим в режиме таблицы не являются измененными ценами).
вернувшись в режим Конструктора запросов, нажать кнопку Запуск (!).
С помощью запроса-обновления можно за один раз можно изменить значение нескольких полей. Кроме того, для вычисление новых значений одних полей можно использовать значение других полей.
Пример 1: вам нужно в таблице Заказы для записей, данные продажи которых датируется сегодняшним числом, а поле Продано = 0. продано поставить значение поля Заказано.
Тогда бланк запроса на обновление будет выглядеть следующим образом:
Поле |
Продано |
Дата продажи |
Имя таблицы |
Заказы |
Заказы |
Обновление |
[Заказы!][Заказано] |
|
Условие |
0 |
Date() |
Пример 2.
В базе данных Телефонно-адресная книга должна содержаться информация о фактических и юридических адресах предприятий. Для предприятий, в которых отсутствуют фактические адреса, необходимо переместить значение юридического адреса в поле фактические адреса. Тогда Бланк запроса на обновление будет выглядеть так:
Поле |
Адреса |
Юрид.адреса |
Имя таблицы |
Тел.-адр.кн |
Тел.-адр.кн |
Обновление |
[юр.адреса] |
Null |
Условие отбора |
Is Null |
Is Not Null |
То есть, для полей в которых отсутствует фактический адрес, в них переместить значение юридического адреса, при этом значение юридического адреса из соответствующей записи Удалится.
Запрос на добавление используется для добавления записей из одной таблицы в другую. Реализующая таблица может быть расположена в той же самой или другой базе данных.
Количество полей в исходной и результирующих таблицах может быть различным. В этом случае Access определяет поля с одинаковыми полями и добавляет в них данные, а остальные игнорирует.
Например, в базе данных Тел.-адр. книга хранятся адреса клиентов, некоторые из которых временно не вошли в состав таблицы Клиенты базы данных Заказы. Теперь их нужно добавить из таблицы Тел.-адр. книга в таблицу Клиенты (например, тех кто работает в СП*).
Для выполнения данного запроса необходимо:
открыть базу данных Тел.-адр. книга
открыть окно Конструктора запросов и добавить в бланк Тел.-адр. книга
выполнить команду Запрос/Добавление или кнопка Тип запроса/Добавление:
Добавление записей в таблицу |
О в текущей базе данных О в другой базе данных Имя файла |
Поскольку информацию из Тел.-адр. книги мы хотим добавить в таблицу другой базы данных, необходимо выбрать переключатель "В другую базу данных", затем указать имя файла (Заказы.mdb) и выбрать из списка имя таблицы Клиенты.
далее необходимо указать поля, данные из которых предлагается поместить в результирующую таблицу.
Поле |
Код клиента |
Фамилия |
… |
Предприятие |
Таблица |
Тел.-адр.кн. |
Тел.-адр.кн. |
|
Тел.-адр.кн. |
Сортировка |
|
|
|
|
Добавление |
Код клиента |
Фамилия |
|
Предприятие |
Усл.отбора |
|
|
|
Like"СП*" |
или |
|
|
|
|
Если, например, в Тел.-адр. книге поле имело название Предприятие, а таблице Клиенты – Организация, то в поле Добавление не будет автоматически подставлено соответствующее поле таблицы Клиенты. Тогда его нужно выбрать из списка в строке Добавление самостоятельно.
перейти в режим Таблицы и проверить правильность выбранных данных, и только потом запустить запрос (!).
Будет выдано сообщение о количестве добавляемых записей.
Например, в конце каждого года вы хотите создавать и хранить таблицу с суммарным итогом объемов продаж по каждому товару.
Тогда:
1) необходимо создать запрос следующего содержания:
Поле |
Код товара |
Сумма:[Заказы]![Продано]*[Заказы]![Условия] |
Таблица |
Заказы |
Заказы |
Груп. операция |
Группировка |
Sum |
Сортировка |
|
|
Выв. на экран |
|
|
Усл. отбора |
|
|
2) после этого изменить тип запроса на Запрос/Создание таблицы или Тип запроса/Создание таблицы. Последует запрос:
Имя таблицы О в текущей базе данных О в другой базе данных Имя файла |
Нужно ответить, какое имя будет присвоено новой таблице и где она будет размещена:
3) запустить запрос на выполнение.
Преобразуем данное условие следующим образом:
"В конце каждого месяца фирма хочет иметь по каждому изделию итоговую сумму продаж и сохранять эти данные в сводной таблице".
Для реальной данной задачи нужно создать запрос на создание сводной таблицы с вычисляемыми полями. Затем преобразовать данный запрос в запрос-добавление в каждом новом месяце.
Поле |
Месяц: month([Дата продажи]) |
Код товара |
Сумма: [Заказы!][Усл]*[Заказы!][Цена] |
Имя таблицы |
|
Заказы |
Заказы |
Группировка |
Группировка |
Группировка |
Sum |
Выв.на экран |
|
|
|
Усл.отб. |
Month (Date()) |
|
|
|
|
|
|
Данный бланк запроса вычисляет итоговые суммы по каждому товару за текущий месяц.
данный запрос на выборку следует первоначально преобразовать в запрос на создание таблицы и указать имя таблицы Сводная. Потом запустить данный запрос и сохранить его.
в следующим месяце прежде чем запросить данный запрос его нужно преобразовать к запросу на добавление, в результате чего к таблице Сводная будут добавляться новые записи по текущему полю.
Если нам нужно выводить данные нескольких таблиц и редактировать данные более чем одной таблицы, нам нужно работать со сложными формами – так называемыми подчиненными формами.
Например, мы хотим получить информацию по каждому Клиенту с возможностью просмотра всех заказов, которые он сделал. Для этого можно воспользоваться следующими способами:
Открыть вкладку Формы и кнопку Создать/Мастер форм выбрать в качестве источника данных таблицу Заказы.
В списке полей переместить из таблицы Заказы поля: Код товара; Дата заказа; Заказано; Дата продажи; Продано; Цена.
Затем выбрать в списке таблицы имя таблицы Клиенты, и из нее перемести поля Код клиента, Фамилия, Имя, Телефон и т.д.
Выбрать тип формы – подчиненная форма.
Выберите тип представления данных
По Клиенты По Заказы
подчиненная. форма О Связанная форма |
на следующем шаге выбрать внешний вид подчиненной формы:
О ленточный табличный |
на следующем шаге определить имена главной и подчиненной формы и указать, в каком режиме открыть форму – просмотр или Конструктор. Сформированная форма будет иметь вид:
Телефон (044)41-41-41 Адрес: 49005, Украина, Днепропетровск Кредит 2000
ЗАКАЗЫ КЛИЕНТА
Код товара Дата заказа Заказано Продано 123 01.01.00 30 10 124 12.04.00 30 15 125 01.01.00 40 0
Запись1* Из 8
Запись 2* Из 30
|
В данной форме нижняя строка имеет информацию о количестве записей и текстовой записи главной формы Клиенты, а во внутренней форме Заказы есть отдельная информация о количестве записей в форме Заказы по данному клиенту.
Данный вид формы для таблиц с отношением "один-ко-многим" не является единственно возможным. На практике в ряде случаев нужна форма, содержащая информацию из подчиненной таблицы является справочной.