Запрос на добавление товара в таблицу ОТБОР

Управляющие запросы

Запросы на добавление записей, удаление записей и изменение записей

Задача:

Создать форму для отбора и удаления товаров из таблицы ТОВАРЫ.

Создадим форму с двумя списками товаров, в левом списке будут все товары, а в правом – кандидаты на удаление. Заложим возможность перемещение товаров из одного списка в другой . Выглядеть это должно примерно так:

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Создание вспомогательной таблицы

Для реализации такой конструкции нам понадобится вспомогательная таблица с одним полем , в которое мы будем записывать отобранные для удаления номера товаров. Создадим такую таблицу с полем НОМЕР и назовем ее ОТБОР.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Создание формы для интерфейса удаления

Теперь создадим новую форму (ФОРМА- СОЗДАТЬ – КОНСТРУКТОР) и поставим на нее элемент управления СПИСОК.

Список доступных товаров

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Последуем советам мастера и выберем для источника строк списка таблицу ТОВАРЫ (пока, потом заменим), с тремя полями кодтовара, название и цена.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Кстати, это диалоговое окно чем-то напоминает ту форму, которую мы делаем, не так ли?

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Просто нажимаем далее (можно подогнать ширину столбцов так, чтобы были видны названия).

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Первый список готов. Надо только имя ему поменять. Пусть будет S1.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

И убрать кнопки перехода между записями, так как форма наша без источника данных, и записей у нее нет вообще.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Можно (даже нужно) посмотреть, как получилось.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Сохраним форму под именем DelForm

Список отобранных товаров

Во втором списке мы хотим видеть отобранные для удаления товары, а именно названия отобранных товаров. Отобранные товары будут храниться в таблице ОТБОР, значит список надо делать по этой таблице, но там только коды. Что делать? Конечно запрос!

Запрос для списка.

Из таблицы ОТБОР возьмем НОМЕР, а из таблицы ТОВАРЫ – НАЗВАНИЕ. Вперед. На SQL это выглядит так:

SELECT НОМЕР, Название

FROM ОТБОР INNER JOIN Товары ON ОТБОР.НОМЕР = Товары.КодТовара

А в конструкторе вот так.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Сохраним запрос под именем SpSelect.

Теперь поставим второй список на нашу форму. Можно повторить предыдущий шаг и изменить имя списка на S2, а можно просто скопировать созданный список и поменять в нем свойства.

Имя на S2

Число столбцов на 2

Источник строк на SpSelect

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Кнопки для обмена

Ну вот, цветочки мы сделали, будем ягодки создавать.

Перемещение товара в список для удаления

Запрос на добавление товара в таблицу ОТБОР

Первая ягодка – поместить выделенный в списке доступных товаров экземпляр в таблицу ОТБОР (добавить запись в таблицу). Сделать это можно при помощи запроса на добавление.

Создаем обычный запрос в режиме конструктора, (при этом не выбираем таблицы) и меняем его на запрос НА ДОБАВЛЕНИЕ

Запрос на добавление товара в таблицу ОТБОР - student2.ru

И только теперь выбираем в какую таблицу мы хотим добавлять записи, ОТБОР.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Выбираем имя поля, в которое мы будем писать информацию: НОМЕР

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Что туда надо записать? Код товара из списка на форме (ах вот для чего мы оставили форму открытой!). Воспользуемся построителем выражений.

Запрос на добавление товара в таблицу ОТБОР - student2.ru

Раз, два, три… Запрос на добавление готов. Сохраним его под именем NumSelect (отобранные номера).

Запрос на добавление товара в таблицу ОТБОР - student2.ru

На SQL запрос выглядит так

INSERT INTO ОТБОР ( НОМЕР ) SELECT [Forms]![DelForm]![S1]

Вообще-то мы тут ничего для вставки не отбираем и слово SELECT вроде бы не нужно, но АССЕSS сам написать по-другому не может, а это тоже работает, поэтому можно оставить и так. Но правильнее будет использовать вот такую форму запроса на добавление

INSERT INTO ОТБОР ( НОМЕР ) VALUES ( [Forms]![DelForm]![S1])

Закроем запрос.

Наши рекомендации