Запросы
201
З
АМЕЧАНИЕ
Рассмотренный ранее запрос
Расчет стоимости
(см. рис. 4.43) позволяет автомати-
зировать расчет стоимости товара, указанного в каждой строке спецификации наклад-
ной — записи таблицы ОТГРУЗКА. Для этого достаточно убрать в нем параметр усло-
вия отбора.
1.
Для подсчета
общей стоимости товара, отгруженного по каждой накладной, соз-
дайте запрос на основе таблицы ОТГРУЗКА.
2.
Включите в бланк запроса поля, определяющие составной ключ накладной: но-
мер накладной (
НОМ_НАКЛ
) и код склада (
КОД_СК
) и поле
СУММА_ОТГР
.
3.
Выполните группировку по двум полям, определяющим составной ключ на-
кладной. Это приведет к включению в группу всех записей об отгрузках товаров
по одной накладной. Для поля
СУММА_ОТГР
выберите статистическую функцию
Sum
. Для группы будет подсчитана стоимость всех товаров, отгруженных по на-
кладной.
4.
Теперь значения стоимости накладных, рассчитанные с
использованием стати-
стической функции
Sum
нужно сохранить в соответствующем поле таблицы
НАКЛАДНАЯ. Однако запрос на обновление непосредственно на
запросе с
группировкой построить нельзя. Поэтому преобразуйте запрос на выборку в за-
прос на создание таблицы. Создаваемой в запросе таблице дайте имя
Стоимость
накладной
. Далее эту таблицу используйте для обновления поля
СУММА_НАК
в на-
кладной.
5.
Если в таблице ОТГРУЗКА не хранится значение стоимости товара, рассчитайте
общую стоимость товаров одной накладной в вычисляемом поле по формуле
[ЦЕНА]*[КОЛ_ОТГР]
и для этого поля используйте статистическую функцию
Sum
.
Запрос в этом случае создавайте на двух таблицах ОТГРУЗКА и ТОВАР.
6.
Сохраните запрос под именем
Расчет стоимости накладной
(рис. 4.44).
Рис. 4.44.
Расчет стоимости всего товара, отгруженного по накладной, и сохранение в новой таблице
202
Глава 4
7.
Создайте запрос на обновление на основе обновляемой таблицы базы данных
НАКЛАДНАЯ и новой таблицы Стоимость накладной, содержащей данные для
обновления.
8.
В схеме данных запроса установите связь таблиц по полям, однозначно
идентифицирующим накладную:
НОМ_НАК
и
КОД_СК
.
9.
В бланк запроса включите единственное обновляемое в
таблице НАКЛАДНАЯ
поле
СУММА_НАК
, в строке
Обновление
(Update To) введите имя поля
Sum-СУММА_ОТГР
из таблицы Стоимость накладной, из которого будет выбираться
значение для обновления (рис. 4.45).
10.
Сохраните запрос под именем
Обновление стоимости накладной
.
Рис. 4.45.
Обновление поля с общей стоимостью товара по накладной
11.
Для решения задачи вычисления общей стоимости накладной последовательно
выполните сначала запрос на создание таблицы
Расчет стоимости накладной
,
а затем запрос на
Обновление стоимости накладной
. Если в таблице
ОТГРУЗКА не была рассчитана стоимость каждого товара, отгружаемого поку-
пателю, предварительно должен быть
выполнен запрос
Расчет стоимости
(см. рис. 4.43) без условий отбора.
Конструирование запроса на добавление
С помощью запроса
Добавление
(Append) производится добавление записей
в таблицу базы данных. Добавляемые записи формируются в создаваемом конст-
руктором запросе на выборку из одной или нескольких таблиц базы данных. При
использовании нескольких таблиц их записи объединяются в соответствии с ука-
занным способом объединения.
Запросы
203
Структура записи таблицы, из которой добавляются записи, может не полностью
совпадать со структурой записи дополняемой таблицы. В добавляемых записях
может быть меньше полей, если на поля в таблице, куда добавляются записи, не
наложено требование по обязательности их заполнения. Допускается несоответст-
вие типов полей, если возможно преобразование типа
данных одного поля в тип
данных другого поля. Добавляемые записи обязательно должны включать значения
ключевых полей. В бланк запроса могут быть включены поля для задания условий
отбора добавляемых записей. В качестве значений полей добавляемых записей мо-
жет быть использовано вычисляемое выражение.
Добавление данных в связанные таблицы
Задача
Пусть на складах фирмы имеются свои базы данных, в которых ведется учет на-
кладных. Данные накладных так же, как и данные в централизованной базе "По-
ставка товаров", сохраняются в двух таблицах. Допустим, они имеют имена На-
кладные склада и Отгрузка склада и такие же ключевые поля, как и аналогичные
таблицы централизованной базы. В конце каждого дня в централизованной базе
данных выполняется команда импортирования этих таблиц с данными об отгру-
женных со склада товарах. Далее с помощью запросов на добавление накладные,
оформленные на складе, включаются в централизованную базу данных. Пер-
вым должен выполняться запрос на добавление записей в главную таблицу
НАКЛАДНАЯ. Только после этого могут быть добавлены
связанные записи в под-
чиненную таблицу ОТГРУЗКА. Это обусловлено тем, что в схеме данных базы для
связи таблиц НАКЛАДНАЯ и ОТГРУЗКА установлен параметр
Обеспечение це-
лостности данных
(Enforce Referential Integrity), делающий возможным
добавле-
ние подчиненных записей только в том случае, когда в главной таблице уже имеет-
ся связанная запись.
1.
Создайте запрос на основе таблицы
Накладные склада, выбрав вкладку ленты —
Создание
(Create) и в группе
Запросы
(Queries) нажмите кнопку
Конструктор
запросов
(Query Design). По умолчанию будет создан запрос на выборку, что
подтверждается выделенным на вкладке
Работа с запросами
|
Конструктор
(Query Tools | Design) типом созданного запроса —
Выборка
(Select).
2.
Превратите его в запрос на добавление, выбрав тип запроса
Добавление
(Append). При этом открывается диалоговое окно
Добавление
(Append)
(рис. 4.46).
3.
В окне
Добавление
в поле
имя таблицы
(Table Name)
введите или выберите из
списка имя таблицы НАКЛАДНАЯ, в которую надо добавить записи.
4.
Так как таблица-получатель добавляемых записей находится в открытой базе
данных, отметьте переключатель
в
текущей базе данных
(Current Database).
Для таблицы, находящейся в другой базе данных, надо отметить переключатель
в другой базе данных
(Another Database) и ввести имя файла базы данных. При
необходимости надо указать путь к другой базе данных. Помимо базы данных
Access, можно указать базу данных Microsoft FoxPro, Paradox, dBASE или ввести
строку подключения для базы данных SQL Server.