Запросы
205
8.
Для предварительного
просмотра записей, которые планируется добавить в
таблицу, нажмите кнопку
Режим
(View) на вкладке ленты
Конструктор
(Design) или
Режим таблицы
(Datasheet View) в строке состояния. Возврат
в режим конструктора запросов производится аналогично.
9.
Для добавления записей выполните запрос, нажав кнопку
Выполнить
(Run) на
вкладке ленты. При этом откроется диалоговое
окно с сообщением о числе
добавляемых записей и вопросом о продолжении операции добавления.
З
АМЕЧАНИЕ
Если таблица, в которую добавляются записи, содержит ключевое поле, добавляемые
записи должны содержать такое же поле. Те записи, добавление которых приведет
к появлению совпадающих или пустых значений в ключевом поле, не будут добавле-
ны. Записи не добавляются и в случае, если невозможно преобразование типа данных
в добавляемых полях или не выполняются условия на значения.
10.
Перейдите в режим
SQL. Эквивалентная запросу на добавление инструкция
INSERT INTO
имеет вид:
INSERT INTO НАКЛАДНАЯ (НОМ_НАКЛ, КОД_СК, ДАТА_ОТГР, НОМ_ДОГ, СУММА_НАКЛ)
SELECT [Накладные склада].НОМ_НАКЛ, [Накладные склада].КОД_СК,
[Накладные склада].ДАТА, [Накладные склада].НОМ_ДОГ,
[Накладные склада].СУММА_НАКЛ
FROM [Накладные склада];
Инструкция
INSERT INTO
определяет поля таблицы НАКЛАДНАЯ,
которые
должны заполниться значениями из полей добавляемых записей. Поскольку в
запросе в качестве источника добавляемых записей указана таблица
Накладные
склада, конструктор создал на
ее основе запрос на выборку, который определяет
поля добавляемых записей. Этот запрос представлен инструкцией
SELECT
. Спи-
сок имен полей и порядок их перечисления для обеих таблиц должен совпадать.
Задание 4.7. Создайте запрос на добавление записей в таблицу ОТГРУЗКА
из таблицы Отгрузка склада
После дополнения таблицы НАКЛАДНАЯ записями из таблицы Накладные склада
можно добавлять записи в подчиненную таблицу ОТГРУЗКА из таблицы Отгрузка
склада.
Добавление данных из нескольких таблиц
Задача
Необходимо создать новую
накладную на отгрузку товара покупателю. Пусть това-
ры по накладным отгружаются один раз в месяц в полном соответствии с планом
поставок. Это означает, что по каждому договору в месяц выписывается только од-
на накладная, а спецификация накладной должна полностью совпадать со специ-
фикацией договора на заданный месяц. Прежде чем заполнять спецификацию на-
кладной, создайте в
таблице НАКЛАДНАЯ новую запись, заполнив поля
Номер
накладной
,
Номер склада
,
Номер договора
и
Дата отгрузки
. Только теперь
Запросы
207
INSERT INTO ОТГРУЗКА (НОМ_НАКЛ, КОД_СК, КОД_ТОВ, КОЛ_ОТГР, СУММА_ОТГР)
SELECT НАКЛАДНАЯ.НОМ_НАКЛ, НАКЛАДНАЯ.КОД_СК,
ПОСТАВКА_ПЛАН.КОД_ТОВ, ПОСТАВКА_ПЛАН.КОЛ_ПОСТ,
ПОСТАВКА_ПЛАН.СУММА_ПОСТ
FROM НАКЛАДНАЯ INNER JOIN ПОСТАВКА_ПЛАН ON
НАКЛАДНАЯ.НОМ_ДОГ = ПОСТАВКА_ПЛАН.НОМ_ДОГ
WHERE (((ПОСТАВКА_ПЛАН.СРОК_ПОСТ)=[Номер месяца]) AND
((ПОСТАВКА_ПЛАН.НОМ_ДОГ)=[Номер договора]) AND
((Month([ДАТА_ОТГР]))=[Номер месяца]));
Инструкция
INSERT INTO
определяет поля записей, добавляемых в таблицу
ОТГРУЗКА. Структура и количество добавляемых записей определяется числом
записей, возвращаемых инструкцией выбора
SELECT
. Список имен полей и поря-
док их перечисления для таблицы ОТГРУЗКА, куда добавляются записи,
и для таблицы,
определяемой инструкцией
SELECT
, должен совпадать.
Конструирование запроса на удаление
Запрос на удаление (Delete Query) позволяет удалить записи из одной таблицы или
из нескольких взаимосвязанных таблиц, для связи с которыми установлен параметр
обеспечения целостности данных
Каскадное удаление связанных записей
(Cascade Delete Related Records). В схему данных запроса включается таблица, из
которой должны удаляться записи, и связанные с ней таблицы, для полей которых
требуется задать условия отбора удаляемых записей.
Задача
Пусть необходимо из справочника удалить запись о покупателе с кодом
П003
.
В схеме данных базы "Поставка товаров" для всех связей установлен параметр
обеспечения целостности
Каскадное удаление связанных записей
(Cascade
Delete
Related Records), поэтому удаление записи из таблицы ПОКУПАТЕЛЬ повлечет за
собой удаление из базы всех подчиненных ему записей на всех уровнях иерархии.
Автоматически будут удалены все договоры этого покупателя, а также все наклад-
ные, выписанные по этим договорам, т. е. будут удалены связанные записи из таб-
лиц ДОГОВОР, ПОСТАВКА_ПЛАН, НАКЛАДНАЯ и ОТГРУЗКА.
1.
Создайте запрос на выборку. Добавьте в схему данных запроса таблицу
ПОКУПАТЕЛЬ, из которой удаляются записи.
2.
Преобразуйте запрос на выборку в запрос на удаление, выбрав на вкладке ленты
Конструктор
(Design) тип запроса
Удаление
(Delete) или выполнив команду
контекстного меню запроса
Тип запроса | Удаление
(Query Type | Delete Query).
3.
После преобразования запроса в запрос на удаление в его бланке появляется
строка
Удаление
(Delete) (рис. 4.49).
4.
Далее приступайте к формированию бланка запроса. Переместите символ звез-
дочки (*) из списка полей таблицы ПОКУПАТЕЛЬ в бланк запроса. В строке
Удаление
(Delete) в столбце этого
поля появляется значение
Из
(From).
5.
Для того чтобы задать условия отбора удаляемых записей, переместите с по-
мощью мыши в бланк запроса поле
КОД_ПОК
из таблицы ПОКУПАТЕЛЬ. В строке