- •Цели и задачи курсового проектирования
- •Основные требования к курсовой работе.
- •Структура и содержание отчета по курсовой работе
- •Оформление курсовой работы
- •Список литературы
- •Методические указания к проектированию баз данных под управлением субд access Пример базы данных оптовой фирмы.
- •Этапы проектирования базы данных
- •Проектирование реляционной модели бд
- •1. Текстовый
- •10. Мастер подстановок
- •Создание структуры бд в среде субд access
- •Создание структуры таблиц
- •Объединение структур таблиц в единую схему
- •Проектирование приложения «Учет и анализ выполнения заказов»
- •Разработка форм ввода данных
- •Форма «Ввод справочника о товарах»
- •Форма «Ввод списка клиентов»
- •Форма «Ввод данных о заказе»
- •Описание создания формы «Ввод справочника о товарах»
- •Описание создания формы «Заказы»
- •Создание макета формы «Заказы»
- •Создание подчиненной формы «Спецификация»
- •Создание связанной формы «Оплата»
- •Продолжение создания формы «Заказы»
- •Создание кнопочных форм
- •Создание запросов
- •Разработка первого запроса
- •Разработка второго запроса
- •Создание третьего запроса.
- •Создание четвертого запроса
- •Проектирование отчетов
- •Расширение функциональности приложений
- •Построение формы по результатам запроса
- •После нажатия кнопки «ок» ссылка на поле будет перенесена в запрос, и конечный вид запроса будет выглядеть следующим образом.
- •Использование объектов в приложениях
- •Использование базы данных в сети
Разработка второго запроса
В случае, когда оплата заказа оценивается по полной сумме, оплаченной клиентом, необходимо, с одной стороны, знать стоимость заказа, с другой стороны, просуммировать все факты оплаты по каждому заказу и сравнить полученные суммы. Реализовать этот запрос можно по следующей схеме:
Построить запрос находящий стоимости заказов (1 базовый запрос);
Построить запрос, вычисляющий полные суммы оплаты по заказам (2 базовый запрос);
На основании предыдущих запросов построить запрос, находящий заказы, отвечающие условию:
«Полная сумма оплаты» <= «Сумма стоимости заказа»
Вид первого из них приведен на рисунке ниже. Для того чтобы получить стоимость каждого заказа, нужно в запросе включить функцию группировки (позиция «Группировка» в пункте меню «Вид») и установить способы группировки, как показано на рисунке ниже.
Формирование выражения стоимости в позиции поля производится с помощью построителя выражений как показано ниже.
Выполнение запроса даст следующий результат:
SQL выражение для запроса выглядит так:
SELECT Клиенты.Организация, Заказ.[Номер заказа], Sum([Цена]*[Количество]*(1+[Наценка]-[Скидка])) AS Стоимость
FROM Клиенты INNER JOIN (Заказ INNER JOIN Спецификация ON Заказ.[Номер заказа] = Спецификация.[Номер заказа]) ON Клиенты.[Код клиента] = Заказ.[Код клиента]
GROUP BY Клиенты.Организация, Заказ.[Номер заказа];
Аналогично строится и второй базовый запрос
Результат его будет таким:
А SQL выражение будет следующим:
SELECT Оплата.[Номер заказа], Sum(Оплата.[Сумма оплаты]) AS [Sum-Сумма оплаты]
FROM Оплата
GROUP BY Оплата.[Номер заказа];
Сравнивая результаты выполнения запросов видим, что среди оплаченных нет 6 и 7 заказов. То есть в итоговом запросе придется объединять базовые запросы по принципу изложенному при построении первого запроса.
И, наконец, третий итоговый запрос позволяющий проанализировать оплату заказов выглядит так:
Отклонение: [Суммы заказов]![Стоимость] - Nz( [Суммы оплаты заказов]![Sum-Сумма оплаты] )
Функция Nz используется для того, чтобы перевести возможные значения Null находящиеся в поле Sum-Сумма оплаты в обычный 0, потому что в СУБД Access со значением Null арифметические операции не выполняются. Результат выполнения запроса представлен ниже.
Он показывает общую картину состояния оплаты заказов и может быть использован для анализа ситуации. Если этот запрос будет использоваться регулярно, то имеет смысл построить отчет, в котором результат выполнения запроса будет представлен в виде документа. Построение отчета будет рассмотрено ниже. SQL выражение для этого запроса будет таким:
SELECT [Суммы заказов].Организация, [Суммы заказов].[Номер заказа], [Суммы заказов].Стоимость, [Суммы оплаты заказов].[Sum-Сумма оплаты], [Суммы заказов]!Стоимость-Nz([Суммы оплаты заказов]![Sum-Сумма оплаты]) AS Отклонение
FROM [Суммы заказов] LEFT JOIN [Суммы оплаты заказов] ON [Суммы заказов].[Номер заказа] = [Суммы оплаты заказов].[Номер заказа];
В приведенном выше описании достаточно подробно были разобраны варианты построения первого и второго запросов. Для оставшихся двух будут приведены итоговые формы QBE и SQL выражений .