Запрос на добавление товара в таблицу ОТБОР
Управляющие запросы
Запросы на добавление записей, удаление записей и изменение записей
Задача:
Создать форму для отбора и удаления товаров из таблицы ТОВАРЫ.
Создадим форму с двумя списками товаров, в левом списке будут все товары, а в правом – кандидаты на удаление. Заложим возможность перемещение товаров из одного списка в другой . Выглядеть это должно примерно так:
Создание вспомогательной таблицы
Для реализации такой конструкции нам понадобится вспомогательная таблица с одним полем , в которое мы будем записывать отобранные для удаления номера товаров. Создадим такую таблицу с полем НОМЕР и назовем ее ОТБОР.
Создание формы для интерфейса удаления
Теперь создадим новую форму (ФОРМА- СОЗДАТЬ – КОНСТРУКТОР) и поставим на нее элемент управления СПИСОК.
Список доступных товаров
Последуем советам мастера и выберем для источника строк списка таблицу ТОВАРЫ (пока, потом заменим), с тремя полями кодтовара, название и цена.
Кстати, это диалоговое окно чем-то напоминает ту форму, которую мы делаем, не так ли?
Просто нажимаем далее (можно подогнать ширину столбцов так, чтобы были видны названия).
Первый список готов. Надо только имя ему поменять. Пусть будет S1.
И убрать кнопки перехода между записями, так как форма наша без источника данных, и записей у нее нет вообще.
Можно (даже нужно) посмотреть, как получилось.
Сохраним форму под именем DelForm
Список отобранных товаров
Во втором списке мы хотим видеть отобранные для удаления товары, а именно названия отобранных товаров. Отобранные товары будут храниться в таблице ОТБОР, значит список надо делать по этой таблице, но там только коды. Что делать? Конечно запрос!
Запрос для списка.
Из таблицы ОТБОР возьмем НОМЕР, а из таблицы ТОВАРЫ – НАЗВАНИЕ. Вперед. На SQL это выглядит так:
SELECT НОМЕР, Название
FROM ОТБОР INNER JOIN Товары ON ОТБОР.НОМЕР = Товары.КодТовара
А в конструкторе вот так.
Сохраним запрос под именем SpSelect.
Теперь поставим второй список на нашу форму. Можно повторить предыдущий шаг и изменить имя списка на S2, а можно просто скопировать созданный список и поменять в нем свойства.
Имя на S2
Число столбцов на 2
Источник строк на SpSelect
Кнопки для обмена
Ну вот, цветочки мы сделали, будем ягодки создавать.
Перемещение товара в список для удаления
Запрос на добавление товара в таблицу ОТБОР
Первая ягодка – поместить выделенный в списке доступных товаров экземпляр в таблицу ОТБОР (добавить запись в таблицу). Сделать это можно при помощи запроса на добавление.
Создаем обычный запрос в режиме конструктора, (при этом не выбираем таблицы) и меняем его на запрос НА ДОБАВЛЕНИЕ
И только теперь выбираем в какую таблицу мы хотим добавлять записи, ОТБОР.
Выбираем имя поля, в которое мы будем писать информацию: НОМЕР
Что туда надо записать? Код товара из списка на форме (ах вот для чего мы оставили форму открытой!). Воспользуемся построителем выражений.
Раз, два, три… Запрос на добавление готов. Сохраним его под именем NumSelect (отобранные номера).
На SQL запрос выглядит так
INSERT INTO ОТБОР ( НОМЕР ) SELECT [Forms]![DelForm]![S1]
Вообще-то мы тут ничего для вставки не отбираем и слово SELECT вроде бы не нужно, но АССЕSS сам написать по-другому не может, а это тоже работает, поэтому можно оставить и так. Но правильнее будет использовать вот такую форму запроса на добавление
INSERT INTO ОТБОР ( НОМЕР ) VALUES ( [Forms]![DelForm]![S1])
Закроем запрос.