Автоматизация и учет поставок товаров

–PAGE_BREAK–
3 Реализация системы
3.1 Создание, связывание и заполнение таблиц

Создадим базу данных для ввода, хранения данных о поставках товаров, поставщиках, которые поставляют эти товары, видах товаров и странах изготовителях.

Новую таблицу для ввода данных можно создать тремя способами:

1) с помощью мастера таблиц;

2) в режиме таблицы (путем ввода данных);

3) в режиме конструктора.

Создадим таблицы базы данных в режиме конструктора. Создадим новую таблицу и сохраним ее в базе данных под именем «Вид товара».

Для создания таблицы в режиме конструктора нажмем кнопку «Таблицы» на панели «Объекты окна базы данных», а затем кнопку «Создание таблицы в режиме конструктора». Появится окно конструктора.

Окно конструктора таблицы заполним атрибутами таблицы «Вид товара».

В таблице, расположенной в верхней части окна, вводим имена атрибутов (полей) и типы данных. В ячейке «Тип данных» из выпадающего списка выбираем нужный тип.

После того как указано имя поля и выбран тип данных, можно выполнить дополнительную настройку свойств каждого поля. Это делается в нижней части окна, которая называется «Свойства поля». Некоторые свойства полей имеют фиксированный набор значений. При попадании в соответствующую ячейку в ней автоматически появляется кнопкасо стрелкой, при нажатии на которую можно выбрать нужное значение свойства из выпадающего списка аналогично тому, как это делалось при выборе типа данных. Набор свойств полей, который можно увидеть на вкладке «Общие», отличается для полей различных типов.

В свойствах поля в разделе Общее укажем, что поле обязательное. Тоже сделаем для всех полей.

Теперь нужно установить первичный ключ. Для этого выделяем поле (щелчок мыши по строке поля), которое будет ключевым, в данном случае это поле «Код вида»,нажмемпункт меню «Правка/Ключевое поле» или кнопку на панели инструментов.

Пример структуры таблицы в режиме конструктора приведен на рисунке 1.

Рисунок 1 – Структура таблицы «Вид товара» в режиме конструктора
Завершим работу с таблицей, предварительно сохранив ее под именем «Вид товара».

Аналогично строятся и остальные таблицы: «Страна изготовитель», «Поставщик», «Поставка» и «Товар». Их структура в режиме конструктора представлена на рисунках 2,3,4 и 5.
Рисунок 2 – Структура таблицы «Страна изготовитель» в режиме конструктора
Рисунок 3 – Структура таблицы «Поставщик» в режиме конструктора
Рисунок 4 – Структура таблицы «Поставка» в режиме конструктора
Рисунок 5 – Структура таблицы «Товар» в режиме конструктора
Теперь определим связи между таблицами базы данных «Поставка товаров». База данных состоит из пяти таблиц. Таблица «Вид товара» содержит информацию обо всех видах товаров, поставляемых в магазин. Таблица «Страна изготовитель» содержит сведения о странах изготовителях товаров.  В таблице «Поставщик» хранится информация о поставщиках, их адресах и телефонах. Таблица «Товар» отображает сведения о товарах, к какому виду относится товар (код вида), о стоимости конкретной единицы товара и о стране изготовителе (код страны). Таблица «Поставка» отображает информацию о совершаемых поставках, дате поставки, поставщиках, которые их совершают (код поставщика), о товарах, поставляемых данной поставкой (код товара), о стоимости поставки и о количестве товаров, содержащихся в поставке.

Теперь установим связи между таблицами. Для этого выполняем следующие действия:

1) закроем все открытые таблицы. Создавать или изменять связи между открытыми таблицами нельзя;

2) переключимся в окно базы данных. Для переключения в окно базы данных из других окон нажмем клавишу F11;

3) нажмем кнопку
 на панели инструментов или выберите меню «Сервис/Схемаданных»;

4) если в базе данных не определено никаких связей, то на экран автоматически выводится окно «Добавление таблицы»;

5) дважды щелкнем левой кнопкой мыши по именам таблиц или нажмем кнопку «Добавить», выделив мышью имена таблиц, для которых требуется определить связи. Затем закроем диалоговое окно Добавление таблицы, нажав кнопку «Закрыть»;

6) для связывания полей установим курсор мыши на поле в одной таблице, нажмем левую кнопку мыши и, не отпуская, перетащим его на соответствующее поле во второй таблице. В представленном окне подведем курсор мыши к полю«Код вида» в таблице«Вид товара» левую кнопку мыши и, удерживая ее в нажатом положении, переместите его на поле«Код вида» в таблице«Товар», отпустите кнопку мыши. На экране появится диалоговое окно связи, в котором указаны поля таблиц«Вид товара» и «Товар», по которым установлена связь. В диалоговом окне можно проверить имена полей, представленные в двух колонках. В случае необходимости можно внести изменения.

При этом в разделе «Тип отношения»  автоматически устанавливается тип связи — Один-ко-многим.

Определим параметры связи, для этого установив флажки «Обеспечение целостности данных» и«Каскадное обновление связанных полей». Нажмем кнопку «Создать».

Аналогично производится связывание всех остальных таблиц базы.

В результате получим схему данных, представленную на рисунке 6.
Рисунок 6 – Схема данных
Теперь мы можем вводить данные в таблицы, при этом сначала заполняем главные таблицы, затем для каждой записи главной таблицы создаем несколько записей в подчиненной таблице. Примеры заполненных таблиц представлены на рисунках 7, 8, 9, 10 и 11.
Рисунок 7 – Таблица «Вид товара»

Рисунок 8 – Таблица «Страна изготовитель»

Рисунок 9 – Таблица «Поставщик»

Рисунок 10 – Таблица «Поставка»

Рисунок 11 – Таблица «Товар»
3.2 Реализация запросов к базе данных

Запрос 1. Создадим в режиме конструктора запрос для отбора информации о товарах, изготовленных во Франции.

Динамическая таблица должна содержать поля «Код товара», «Название товара», «Вид товара» и «Страна изготовитель».

Чтобы создать этот запрос сначала необходимо нажать кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Далее щелчком мыши выделяем таблицы «Товар», «Вид товара», «Страна изготовитель» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Затем в бланк запроса добавляем поля «Товар», «Код товара» из таблицы «Товар», «Вид товара» из таблицы «Вид товара» и «Название страны» из таблицы «Страна изготовитель». Зададим сортировку записей динамической таблицы в алфавитном порядке по полю «Товар», для этого щелкнем мышкой в строке «Сортировка» бланка запроса для поля «Товар» и выберите из списка «по возрастанию». Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей.

Чтобы вывести на экран только те товары, которые изготовлены во Франции, в строке «Условие отбора» для поля «Название страны» введем слово «Франция» и нажмем Enter. Чтобы запустить запрос на выполнение, необходимо выполнить команду меню «Вид/Режим таблицы» или открыть список инструмента  и выбрать в нем «Режим таблицы» или нажать кнопку  на панели инструментов или выполнить команду меню «Запрос/Запуск». Запрос в режиме конструктора представлен на рисунке 12.
Рисунок 12 – Запрос «Товары из Франции» в режиме конструктора

Результат запроса в режиме таблицы представлен на рисунке 13.
Рисунок 13 – Запрос «Товар из Франции» в режиме таблицы

Текст запроса «Товары из Франции» на языке SQL:

SELECT Товар.кодТовара, Товар.названиеТовара,                                      ВидТовара.видТовара, [Страна изготовитель].названиеСтраны

FROM [Страна изготовитель] INNER JOIN (ВидТовара INNER JOIN Товар ON ВидТовара.кодВида = Товар.кодВида) ON [Страна изготовитель].кодСтраны = Товар.кодСтраны

WHERE ((([Страна изготовитель].названиеСтраны)=«Франция»))

ORDER BY Товар.названиеТовара.

Запрос 2. Далее создадим запрос для отбора тех товаров, стоимость которых составляет более 4000 рублей.

Динамическая таблица должна содержать поля «Код товара», «Название товара», «Вид товара» и «Стоимость единицы продукции».

Чтобы создать данный запрос сначала необходимо нажать кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Далее щелчком мыши выделяем таблицы «Товар» и «Вид товара» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Затем в бланк запроса добавляем поля «Код товара», «Название товара» из таблицы «Товар» и «Вид товара» и «Стоимость единицы продукции» из таблицы «Вид товара». Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей.

Чтобы вывести на экран только те товары, стоимость которых более 4000 рублей, в строке «Условие отбора» для поля «Стоимость единицы продукции» введем выражение «>4000» и нажмем Enter. Запрос в режиме конструктора представлен на рисунке 14.
Рисунок 14 – Запрос «Стоимость товаров более 4000 рублей» в режиме конструктора

Результат запроса в режиме таблицы представлен на рисунке 15
Рисунок 15 – Запрос «Стоимость товаров более 4000 рублей» в режиме таблицы

Текст запроса «Стоимость товаров более 4000 рублей» на языке SQL:

SELECT Товар.кодТовара, Товар.названиеТовара, ВидТовара.видТовара, Товар.стоимостьЕдиницыПродукции

FROM ВидТовара INNER JOIN Товар ON ВидТовара.кодВида = Товар.кодВида

WHERE (((Товар.стоимостьЕдиницыПродукции)>4000)).

Запрос 3. Создадим запрос для отбора информации о поставщиках из Минска.

Динамическая таблица должна содержать поля «Код поставщика», «Поставщик» и «Адрес».

Для создания этого запроса нажмем кнопку «Запросы» на панели  «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Далее щелчком мыши выделяем таблицу «Поставщик» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Затем в бланк запроса добавляем поля «Код поставщика», «Поставщик» и «Адрес». Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей.

Чтобы вывести на экран только поставщиков из Минска в строке «Условие отбора» для поля «Адрес» введем выражение Like «Минск*» и нажмем Enter. Запрос в режиме конструктора представлен на рисунке 16.
Рисунок 16 – Запрос«Поставщики из Минска» в режиме конструктора

Результат запроса в режиме таблицы представлен на рисунке 17

Рисунок 17 – Запрос «Поставщики из Минска» в режиме таблицы

Текст запроса «Поставщики из Минска» в режиме SQL:

SELECT Поставщик.кодПоставщика, Поставщик.поставщик, Поставщик.адрес

FROM Поставщик

WHERE (((Поставщик.адрес) Like «Минск*»));

Запрос 4. Далее  создадим запрос на для изменения стоимости товаров третьего вида на 500 рублей. Нужно подсчитать новую стоимость товаров данного вида.

Динамическая таблица должна содержать поля «Код товара», «Название товара», «Название вида» и «Стоимость единицы продукции».

Для создания такого запроса нажмем кнопку «Запросы» на панели  «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Далее щелчком мыши выделяем таблицы «Товар» и «Вид товара» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Затем в бланк запроса добавляем поля «Код товара», «Название товара», «Стоимость единицы продукции» из таблицы «Товар» и «Код вида» из таблицы «Вид товара». Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей. Щелкните мышкой в стоке «Условие отбора» для поля «Код вида», введем «3» и нажмем Enter. Добавим в запрос вычисляемое поле для расчета новой цены. Для этого в пустую ячейку строки «Поле» бланка запроса введем следующее выражение: «НоваяЦена: [стоимостьЕдиницыПродукции]+500». Запрос в режиме конструктора представлен на рисунке 18.
Рисунок 18 – Запрос «Новая цена товара определенного вида» в режиме конструктора

Результат запроса в режиме таблицы представлен на рисунке 19.

Рисунок 19 – Запрос «Новая цена товара определенного вида»  в режиме таблицы

Текст запроса «Новая цена товара определенного вида» в режиме SQL:

SELECT Товар.кодТовара, Товар.названиеТовара, ВидТовара.кодВида, Товар.стоимостьЕдиницыПродукции, [стоимостьЕдиницыПродукции]+500 AS НоваяЦена

FROM ВидТовара INNER JOIN Товар ON ВидТовара.кодВида = Товар.кодВида

WHERE (((ВидТовара.кодВида)=3));

Запрос 5. Теперь создадим запрос на обновление для подсчета стоимости поставок.Для реализации этого запроса загружаем«Конструктор запросов», затем в меню «Запрос» вызываем команду «Обновление»,  добавляем таблицы «Поставка» и «Товар», выбираем поле «Стоимость поставки»и в появившуюся строку «Обновить»  конструктора запросов вводим выражение: [стоимостьЕдиницыПродукции]*[количествоПоставленныхТоваров]. Чтобы расчет выполнялся только для тех записей, для которых стоимость ещё не вычислена,  в строке «Условие отбора» пишем выражение «IsNull». После запуска запроса на выполнение появится диалоговое окно, в котором нужно нажать кнопку «Да». Запрос в режиме конструктора представлен на рисунке 20.
Рисунок 20 – Запрос «Стоимость поставок» в режиме конструктора

Результаты запроса в режиме таблицы представлены на рисунке 21.
Рисунок 21 — Запрос «Стоимость поставок» в режиме таблицы

Текст запроса «Стоимость поставок» в режиме SQL:

UPDATE Товар INNER JOIN Поставка ON Товар.кодТовара = Поставка.кодТовара SET Поставка.стоимостьПоставки  =  [количествоПоставленныхЕдиниц]*[стоимостьЕдиницыПродукции]

WHERE (((Поставка.стоимостьПоставки) Is Null));

Запрос 6. Создадим запрос для вычисления средней цены каждого вида товара. Для этого нажмем кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Щелчком мыши выделим таблицы «Вид товара» и «Товар» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Далее добавим в бланк запроса поле «Вид товара» из таблицы «Вид товара» и поле «Стоимость единицы продукции» из таблицы «Товар».  Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей. Затем включим отображение строки «Групповая операция» в бланке запроса, для чего щелкнем на кнопке  на панели инструментов конструктора запросов, чтобы в бланке запроса появилась строка «Групповая операция», или выполним команду меню «Вид/Групповые операции» или установим курсор мышки на одно из полей запроса в бланке запросов, нажмем правую клавишу мышки и выполним команду «Групповые операции». Теперь укажем, что для каждого вида товара должна быть вычислена средняя цена. Для этого в строке «Групповая операция» бланка запроса для поля «Стоимость единицы продукции» выберем из списка функцию Avg. Для этого поля зададим следующие свойства: формат поля – денежный, число десятичных знаков – 0. Зададим сортировку записей динамической таблицы по возрастанию по итоговому полю. Для этого в строке «Сортировка» бланка запроса для поля «Оценка» выберите из списка «по возрастанию». Присвоим вычисляемому полю имя «Средняя цена». Для чего щелчком мыши, установив текстовый курсор перед именем поля «Стоимость единицы продукции», введем «Средняя цена:». Запрос в режиме конструктора представлен на рисунке 22.
Рисунок 22 – Запрос «Средняя цена каждого вида» в режиме конструктора

Данный запрос в режиме таблицы представлен на рисунке 23.

Рисунок 23 – Запрос «Средняя цена каждого вида» в режиме таблицы

Текст запроса «Средняя цена каждого вида» в режиме SQL:

SELECT ВидТовара.видТовара, Avg(Товар.стоимостьЕдиницыПродукции) AS [Средняя стоимость]

FROM ВидТовара INNER JOIN Товар ON ВидТовара.кодВида = Товар.кодВида

GROUP BY ВидТовара.видТовара

ORDER BY Avg(Товар.стоимостьЕдиницыПродукции);

Запрос 7. Создадим итоговый запрос для подсчета количества поставок, осуществленных каждым поставщиком. Для этого нажмем кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Щелчком мыши выделим таблицы «Поставка» и «Поставщик» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей. Затем включим отображение строки «Групповая операция» в бланке запроса, для чего щелкнем на кнопке  на панели инструментов конструктора запросов, чтобы в бланке запроса появилась строка «Групповая операция», или выполним команду меню «Вид/Групповые операции» или установим курсор мышки на одно из полей запроса в бланке запросов, нажмем правую клавишу мышки и выполним команду «Групповые операции». Теперь укажем, что для каждого поставщика должно быть вычислено количество поставок, которые он осуществил. Для этого в строке «Групповая операция» бланка запроса для поля «Код поставки» выберем из списка функцию Count. Далее присвоим вычисляемому полю имя «Количество поставок». Для чего щелчком мыши, установив текстовый курсор перед именем поля «Код поставки» и введем «Количество поставок:». Сохраним запрос, выполнив команду меню «Файл/Сохранить», в поле имя запроса введем: «Количество поставок»и нажмем ОК. Запрос в режиме конструктора представлен на рисунке 24.
Рисунок 24 – Запрос «Количество поставок» в режиме конструктора

Данный запрос в режиме таблицы представлен на рисунке 25.
Рисунок 25 — Запрос «Количество поставок» в режиме таблицы

Текст запроса «Количество поставок» в режиме SQL:

SELECT Поставка.кодПоставщика, Поставщик.поставщик,                          Count(Поставка.кодПоставки) AS [Количество поставок]

FROM Поставщик INNER JOIN Поставка ON Поставщик.кодПоставщика = Поставка.кодПоставщика

GROUP BY Поставка.кодПоставщика, Поставщик.поставщик;

Запрос 8. Создадим запрос для подсчета количества товаров, поставленных каждым поставщиком. Для этого нажмем кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Щелчком мыши выделим таблицы «Поставка» и «Поставщик» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Проверим наличие флажков в строке «Вывод на экран» бланка запроса для всех добавленных полей. Затем включим отображение строки «Групповая операция» в бланке запроса, для чего щелкнем на кнопке  на панели инструментов конструктора запросов, чтобы в бланке запроса появилась строка «Групповая операция», или выполним команду меню «Вид/Групповые операции» или установим курсор мышки на одно из полей запроса в бланке запросов, нажмем правую клавишу мышки и выполним команду «Групповые операции». Теперь укажем, что для каждого поставщика должно быть вычислено количество всех поставленных единиц товаров. Для этого в строке «Групповая операция» бланка запроса для поля «Количество поставленных единиц» выберем из списка функцию Sum. Далее присвоим вычисляемому полю имя «Количество товаров». Для этого щелчком мыши установим текстовый курсор перед именем поля «Количество поставленных единиц» и введем «Количество товаров:». Сохраним запрос, выполнив команду меню «Файл/Сохранить», в поле имя запроса введем: «Количество товаров, поставленных всего каждым поставщиком»и нажмем ОК. Запрос в режиме конструктора представлен на рисунке 26.
Рисунок 26 – Запрос «Количество товаров, поставленных всего каждым поставщиком» в режиме конструктора

Данный запрос в режиме таблицы представлен на рисунке 27.

Рисунок 27 – Запрос «Количество товаров, поставленных всего каждым поставщиком» в режиме  таблицы

Текст запроса «Количество товаров, поставленных всего каждым поставщиком» в режиме SQL:

SELECT Поставка.кодПоставщика, Поставщик.поставщик, Sum(Поставка.количествоПоставленныхЕдиниц) AS [Количество товаров]

FROM Поставщик INNER JOIN Поставка ON Поставщик.кодПоставщика = Поставка.кодПоставщика

GROUP BY Поставка.кодПоставщика, Поставщик.поставщик;

Запрос 9. Теперь создадим перекрестный запрос для подсчета количества поставленных единиц товара каждым поставщиком за все поставки. Чтобы это сделать, необходимо нажать кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Далее щелчком мыши выделим таблицы  «Поставка» и «Поставщик» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Добавим в бланк запроса поля «Поставщик» из таблицы «Поставщик» и поля «Код поставки», «Количество поставленных единиц» (2 раза) из таблицы «Поставка». Теперь определим тип создаваемого запроса. Для этого выполните команду меню «Запрос/Перекрестный». Далее укажем, что значения поля «Поставщик» будут использоваться в качестве заголовков строк, выбрав в строке «Перекрестная таблица» бланка запроса для этого поля из списка «Заголовки строк». Затем укажем, что значения поля «Код поставки» будут использоваться в качестве заголовков столбцов, выбрав в строке «Перекрестная таблица» бланка запроса для этого поля из списка «Заголовки столбцов». Теперь нужно указать, что поле «Количество поставленных единиц» содержит значения, на основании которых будет вычисляться количество всех поставленных товаров. Для этого нужно в строке «Перекрестная таблица» бланка запроса для поля «Количество поставленных единиц» выберите из списка «Значение», а далее в строке «Групповаяоперация» бланка запроса для поля «Количество поставленных единиц» выберем из списка функцию Sum. Добавим в перекрестный запрос столбец, содержащий сумму всех поставленных единиц товара за все поставки. Для этого нужно еще раз перенести в бланк запроса поле «Количество поставленных единиц», в строке «Перекрестная таблица» бланка запроса для этого поля выберем из списка «Заголовки строк», а затем в строке «Групповая операция» бланка запроса для этого поля выберите из списка функцию Sum. Присвоим вычисляемому полю имя «Всего товаров», установив щелчком мыши текстовый курсор перед именем поля «Количество поставленных единиц»  и введя «Всего товаров:». Сохраним запрос в базе данных под именем «Всего поставлено товаров», для этого выполним команду меню «Файл/Сохранить», в поле имя запроса введем: «Всего поставлено товаров» и нажмем ОК. Запрос в режиме конструктора представлен на рисунке 28.
Рисунок 28 – Запрос «Всего поставлено товаров» в режиме конструктора

Данный запрос в режиме таблицы представлен на рисунке 29.

Рисунок 29 — Запрос «Всего поставлено товаров» в режиме таблицы
Запрос в режиме SQLвыглядит следующим образом:

TRANSFORM Sum(Поставка.количествоПоставленныхЕдиниц) AS Всего

SELECT Поставщик.поставщик, Sum(Поставка.количествоПоставленныхЕдиниц) AS Всего

FROM Поставщик INNER JOIN Поставка ON Поставщик.кодПоставщика = Поставка.кодПоставщика

GROUP BY Поставщик.поставщик

PIVOT Поставка.кодПоставки;

Запрос 10. Создадим перекрестный запрос, чтобы подсчитать количество поставленных товаров каждого вида. Для этого необходимо нажать кнопку «Запросы» на панели «Объекты» окна базы данных, затем кнопку «Создание запроса в режиме конструктора». Далее щелчком мыши выделим таблицы  «Товар», «Вид товара» и «Поставка» и нажмем кнопку «Добавить», затем кнопку «Закрыть». Добавим в бланк запроса поля «Вид товара» из таблицы «Вид товара», поле «Название товара» из таблицы «Товар» и поле «Количество поставленных единиц» (2 раза) из таблицы «Поставка». Теперь определим тип создаваемого запроса. Для этого выполните команду меню «Запрос/Перекрестный». Далее укажем, что значения поля «Вид товара» будут использоваться в качестве заголовков строк, выбрав в строке «Перекрестная таблица» бланка запроса для этого поля из списка «Заголовки строк». Затем укажем, что значения поля «Название товара» будут использоваться в качестве заголовков столбцов, выбрав в строке «Перекрестная таблица» бланка запроса для этого поля из списка «Заголовки столбцов». Теперь нужно указать, что поле «Количество поставленных единиц» содержит значения, на основании которых будет вычисляться количество всех товаров. Для этого нужно в строке «Перекрестная таблица» бланка запроса для поля «Количество поставленных единиц» выберать из списка «Значение», а далее в строке «Групповаяоперация» бланка запроса для поля «Количество поставленных единиц» выберем из списка функцию Sum. Добавим в перекрестный запрос столбец, содержащий сумму всех поставленных единиц товара каждого вида. Для этого нужно еще раз перенести в бланк запроса поле «Количество поставленных единиц», в строке «Перекрестная таблица» бланка запроса для этого поля выберем из списка «Заголовки строк», а затем в строке «Групповая операция» бланка запроса для этого поля выберите из списка функцию Sum. Присвоим вычисляемому полю имя «Всего товаров», установив щелчком мыши текстовый курсор перед именем поля «Количество поставленных единиц»  и введя «Всего товаров:». Сохраним запрос в базе данных под именем «Всего товаров каждого вида», для этого выполним команду меню «Файл/Сохранить», в поле имя запроса введем: «Всего товаров каждого вида» и нажмем ОК. Запрос в режиме конструктора представлен на рисунке 30.
Рисунок 30 – Запрос «Всего товаров каждого вида» в режиме конструктора
Данный запрос в режиме таблицы представлен на рисунке 31.
Рисунок 31 — Запрос «Всего товаров каждого вида» в режиме таблицы

Запрос в режиме SQLвыглядит следующим образом:

TRANSFORM Sum(Поставка.количествоПоставленныхЕдиниц) AS [Sum-количествоПоставленныхЕдиниц]

SELECT ВидТовара.видТовара, Поставка.количествоПоставленныхЕдиниц AS Всего

FROM (ВидТовара INNER JOIN Товар ON ВидТовара.кодВида = Товар.кодВида) INNER JOIN Поставка ON Товар.кодТовара = Поставка.кодТовара

GROUP BY ВидТовара.видТовара, Поставка.количествоПоставленныхЕдиниц

PIVOT Товар.названиеТовара;    продолжение
–PAGE_BREAK–
3.3 Создание отчетов
Отчётом обычно называется документ, который создается для распечатки на бумаге. Основное назначение отчета – формировать в нужном виде информацию, которая затем будет выведена на экран или на печать. Отчеты всегда создаются на основе какой-нибудь таблицы или запроса.

Создадим отчет при помощи мастера.  В появившемся окне выбираем таблицу «Поставщик» и из нее добавляем поле «Поставщик». Далее добавляем таблицу «Поставка». Из нее добавляем поля «Код поставки», «Дата поставки»,  «Количество поставленных единиц» и «Стоимость поставки». Нажимаем кнопку «Далее». Появится окно «Выберите вид представления данных», мы ничего не выбираем и нажимаем кнопку «Далее». Появится окно «Добавить уровни группировки?». Без добавления уровней группировки нажимаем «Далее». В появившемся окне нажимаем на «Итоги», выбираем «Sum» для поля «Количество поставленных единиц». Затем выбираем макет для отчета «по левому краю 1». Требуемый стиль выбираем «Полужирный» и нажимаем «Готово». У нас появляется отчет, который будет показывать названия поставщиков, даты поставок, количество поставленных товаров за каждую поставку и стоимость каждой поставки. Также по этим данным будет отображена сумма количества поставленных товаров каждым поставщиком.

Отчет сохраняем под названием «Отчет по поставщикам». Заходим в отчет через конструктор и меняем названия поля «Sum»  на «Всего поставлено товаров» .

Отчет представлен в приложении B.

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

Выбираем создание отчета с помощью мастера. В появившемся окне выбираем таблицу «Вид товара» и из нее добавляем поле «Вид товара». Далее выбираем таблицу «Товар» и выделяем поля «Название товара» и «Стоимость единицы продукции». Нажимаем кнопку «Далее». Появится окно «Выберите вид представления данных», мы ничего не выбираем и нажимаем кнопку «Далее». Появится окно «Добавить уровни группировки?». Без добавления уровней группировки нажимаем «Далее». В появившемся окне нажимаем на «Итоги», выбираем «Min» и «Max». Затем выбираем макет для отчета «по левому краю 2». Требуемый стиль выбираем «Деловой». И нажимаем «Готово».

Отчет сохраняем под именем «Вид товара». Названия полей «Min» и «Max» меняем на «Minцена» и «Maxцена» соответственно.

Отчет представлен в приложении Г.
3.4 Создание форм

Формы служат удобным средством для ввода, просмотра и редактирования информации в базе данных.

Выбираем создание формы с помощью мастера. В появившемся окне выбираем таблицу «Товар» и из нее добавляем поля «Товар» и «Стоимость единицы продукции». Далее добавляем таблицу «Вид товара» и из нее выбираем поле «Вид товара» и таблицу «Поставка» с полями «Дата поставки», «Количество поставленных единиц» и «Стоимость поставки». Нажимаем кнопку «Далее». Появляется окно «Выберите вид представления данных». Здесь мы ничего не меняем, так как сначала мы выбрали главную, а затем подчинённую таблицу. По умолчанию стоит пункт «Подчинённые формы». Нажимаем кнопку «Далее». Появляется окно «Выберите внешний вид подчинённой формы». Выбираем вид «табличный», нажимаем кнопку «Далее». В окне «Выберите требуемый стиль» отмечаем мышкой стиль «Рисовая бумага». Нажимаем кнопку «Готово». Форму сохраняем под названием «Товар». Далее переходим в режим конструктора. На панели элементов выбираем элемент «Кнопка». Переносим его на форму. Появляется диалоговое окно «Создание кнопок». Выбираем пункты: «Работа с отчётом» и «Просмотр отчёта». В следующем окне выбираем отчёт «Поставщики». Нажимаем кнопку «Готово». Таким же образом добавляем вторую кнопку. Переносим её на форму, в диалоговом окне выбираем: «Разное» и «Выполнить запрос». Далее выбираем «», нажимаем кнопку «Готово». Добавляем третью кнопку. Переносим её на форму, в диалоговом окне выбираем: «Приложение» и «Выйти из приложения». Нажимаем кнопку «Готово». Кнопки используются для удобства вывода на экран нужной информации. Они выполняют определённые функции. Кнопка для отчётов позволяет вывести на экран отчёт, кнопка запросов – запрос, а кнопка выхода позволяет выйти из приложения. Форма «Товар» представлена на рисунке 32.
Рисунок 32 – Форма «Товар»

Таким же образом создаем ещё одну форму «Поставщики». Выбираем создание формы с помощью мастера. В появившемся окне выбираем таблицу «Поставщик» и из нее добавляем поля «Поставщик», «Адрес» и «Телефон». Далее добавляем таблицу «Поставка» и из нее выбираем поля «Код поставки», «Стоимость поставки» и «Количество поставленных единиц». Нажимаем кнопку «Далее». Появляется окно «Выберите вид представления данных». Здесь мы ничего не меняем, так как сначала мы выбрали главную, а затем подчинённую таблицу. По умолчанию стоит пункт «Подчинённые формы». Нажимаем кнопку «Далее». Появляется окно «Выберите внешний вид подчинённой формы». Выбираем вид «табличный», нажимаем кнопку «Далее». В окне «Выберите требуемый стиль» отмечаем мышкой стиль «Международный». Нажимаем кнопку «Готово». Далее переходим в режим конструктора. На панели элементов выбираем элемент «Кнопка». Переносим его на форму. Появляется диалоговое окно «Создание кнопок». Выбираем пункты: «Работа с отчётом» и «Просмотр отчёта». В следующем окне выбираем отчёт «Вид товара». Нажимаем кнопку «Готово». Таким же образом добавляем вторую кнопку. Переносим её на форму, в диалоговом окне выбираем: «Разное» и «Выполнить запрос». Далее выбираем «Количество поставок», нажимаем кнопку «Готово». Добавляем третью кнопку. Переносим её на форму, в диалоговом окне выбираем: «Приложение» и «Выйти из приложения». Нажимаем кнопку «Готово». Форма «Поставщик» представлена на рисунке 33.
Рисунок 33 – Форма «Поставщик»
Заключение
В данной работе была разработана база данных по поставке товаров в магазин косметики.

С помощью данной программы можно без труда и специальных знаний вести базу данных, отслеживать всю информацию о поставках товаров в магазин, всю информацию о поставщиках этих товаров, о самих товарах, о стране производителе и о виде товара, к которому они относятся. Также все эти данные можно с легкостью корректировать, удалять и  добавлять записи в таблицы. Совершать все эти действия не составит никакого труда при использовании этой программы.

Кнопочные формы позволяют просматривать всяческие отчеты и запросы о поставках товаров. На примере проделанной работы были рассмотрены практически все функции и возможности Microsoft Accsess. Программа проста в обращении и позволяет систематизировать все данные и заметно сокращает время на их обработку.

На мой взгляд, данных в среде СУБД MS Access практическом применении удобна и достаточно эффективна. При наличии определенных знаний данная программа намного упрощает работу с данными. Лично для меня разработанная база данных имеет множество полезных функций и помогает за короткое время вносить корректировки и поправки.
Список использованных источников
1        Кириллов, В. В.Введение в реляционные базы данных / В. В. Кириллов, Г. Ю. Громов. – СПб.: БХВ-Петербург, 2009. – 464 с.

2        Хомоненко,
 
А. Д.Базы данных: учебник / А. Д. Хомоненко, В. М. Цыганков, М. Г. Мальцев. – 2-е изд., перераб. и доп. – СПб.: КОРОНА принт, 2002. – 672 с.

3        Оскерко, В. С.Технологии организации, хранения и обработки данных: учеб.-практ. пособие / В. С. Оскерко. – Минск.: БГЭУ, 2002. – 120 с.

4        Карпова,
 
Т. С.Базы данных: модели, разработка, реализация / Т. С. Карпова. –  СПб.: Питер, 2002. – 304 с.

5        Хансен,
 
Г.Базы данных: разработка и управление: пер с англ. / Г. Хансен, Дж. Хансен. – М.: БИНОМ, 1999. – 704 с.

6        Вейскас, Дж.Эффективная работа с Мicrosoft Access 2000 / Дж. Вейскас. – СПб.: Питер, 2000. – 1040 с.

7        Ролланд,
 
Ф. Д.Основные концепции баз данных: пер. с англ. / Ф. Д. Ролланд. ‑ М.: Вильямс, 2002. – 256 с.

8        Оскерко,
 
В. С.Практикум по технологиям баз данных: учеб. пособие / В. С. Оскерко, З. В. Пунчик. ‑ Минск.: БГЭУ, 2004. – 170 с.

9        Туманов, В. Е.Основы проектирования реляционных баз данных: учеб. пособие для вузов / В. Е. Туманов. – М.: Интернет-Университет Информационных Технологий, БИНОМ, 2007. – 420 с.

10   Диго,
 
С.
 
М.Базы данных: проектирование и использование: учебник / С. М. Диго. – М.: Финансы и статистика, 2005. – 592 с.

11   Кузин, А. В.Базы данных: учеб. пособие / А. В. Кузин, С. В. Левонисова – М.: Академия, 2005. – 320 с.

12   Левчук,
 
Е. А.Технологии организации, хранения и обработки данных: учеб. пособие / Е. А. Левчук. – Минск.: Выш. шк., 2005. – 239 с.

13   Роб, П.Системы баз данных: проектирование, реализация и управление: пер. с англ. – 5-е изд., перераб. и доп. / П. Роб. – СПб.: БХВ-Петербург, 2004. – 1040 с.

14   Диго, С. М.Access: учеб.-практ. пособие / С. М. Диго. – М.: Велби; Проспект, 2008. – 240 с.

15   MicrosoftAccess2003. Шаг за шагом: практ. пособие: пер. с англ. – М.: ЭКОМ, 2007. – 432 с.

16   Сеннов,
 
А.
 
С.Access2003. Практическая разработка баз данных: учеб. курс / А. С. Сеннов. – СПб.: Питер, 2006. – 256 с.

17   Михеева,
 
В.
 
Д.MicrosoftAccess2003 / В. Д. Михеева, И. А. Харитонова. – СПб.: БХВ-Петербург, 2006. – 1072 с.

18   Бекаревич,
 
Ю.
 
Б.Самоучитель MicrosoftAccess2002 / Ю.Б. Бекаревич, Н.В. Пушкина. – СПб.: БХВ-Петербург, 2002. – 720 с.

19   MicrosoftAccess2002. Русская версия. Шаг за шагом: практ. пособ.: пер. с англ. – М.: ЭКОМ, 2002. – 352 с

20   Золотова, С. И.Практикум по Access / С. И. Золотова. – М.: Финансы и статистика, 2000. – 144 с.

Приложение А

(обязательное)
Рисунок А.1 – Семантическая модель данных
Приложение Б

(обязательное)

Рисунок Б.1 – Логическая модель данных
Приложение В

(обязательное)

ВидТовара

  видТовара                    Шампунь

                  названиеТовара                стоимостьЕдиницыПродукци

                  Шампунь для нормальных волос                                         4 000р.

                  Шампунь для сухих волос                                                  4 000р.

                  Шампунь для окрашенных волос                                          4 000р.

  Итоги для ‘кодВида’ =  1 (3 записей)

  Min цена                                                                                        4 000р.

  Max цена                                                                                       4 000р.

  видТовара                    Лак

                  названиеТовара                стоимостьЕдиницыПродукци

                  Лак для волос сильной                                                       5 000р.

                  фиксации

                  Лак для волос средней                                                       4 800р.

                  фиксации

                  Лак для ногтей                                                                 2 400р.

  Итоги для ‘кодВида’ =  2 (3 записей)

  Min цена                                                                                        2 400р.

  Max цена                                                                                       5 000р.

  видТовара                    Крем

                  названиеТовара                стоимостьЕдиницыПродукци

                  Крем для тела                                                                 5 000р.

                  Крем для рук для                                                              2 000р.

                  комбинированной кожи

                  Крем для рук влажняющий                                                 2 200р.

                  Крем для лица для сухой кожи                                             3 000р.

                  Крем для лица для                                                            3 500р.

                  нормальной кожи

  Итоги для ‘кодВида’ =  3 (5 записей)

  Min цена                                                                                        2 000р.

  Max цена                                                                                       5 000р.

  видТовара                    Гель для душа

                  названиеТовара                стоимостьЕдиницыПродукци

                  Гель для душа очищающий                                                  3 000р.

                  Гель для душа увлажняющий                                              3 100р.

  Итоги для ‘кодВида’ =  4 (2 записей)

  Min цена                                                                                        3 000р.

  Max цена                                                                                       3 100р.

  видТовара                    Тушь для ресниц

                  названиеТовара                стоимостьЕдиницыПродукци

  20 декабря 2010 г.                                                                                                       Страница 1 из 2

                  Тушь для ресниц удлинняющая                                            7 000р.

                  Тушь для ресниц                                                               7 500р.

                  подкручивающая

                  Тушь для ресниц объем                                                     8 000р.

  Итоги для ‘кодВида’ =  5 (3 записей)

  Min цена                                                                                        7 000р.

  Max цена                                                                                       8 000р.

  видТовара                    Помада

                  названиеТовара                стоимостьЕдиницыПродукци

                  Помада увеличивающая                                                    6 000р.

                  Помада увлажняющая                                                       6 100р.

  Итоги для ‘кодВида’ =  6 (2 записей)

  Min цена                                                                                        6 000р.

  Max цена                                                                                       6 100р.

  видТовара                    Блеск для губ

                  названиеТовара                стоимостьЕдиницыПродукци

                  Блеск для губ увеличивающий                                             3 000р.

                  Блеск для губ увлажняющий                                               3 000р.

  Итоги для ‘кодВида’ =  7 (2 записей)

  Min цена                                                                                        3 000р.

  Max цена                                                                                       3 000р.

  видТовара                    Пенка для волос

                  названиеТовара                стоимостьЕдиницыПродукци

                  Пенка для волос сильной                                                    4 200р.

                  фиксации

                  Пенка для волос                                                               4 000р.

                  расглаживающая

                  Пенка для волос для объема                                               4 200р.

  Итоги для ‘кодВида’ =  8 (3 записей)

  Min цена                                                                                        4 000р.

  Max цена                                                                                       4 200р.

Рисунок В.1 – Отчет «Вид товара»    продолжение
–PAGE_BREAK–