- •Анализ предметной области.
- •Назначение проектируемой базы данных
- •Инфологическая модель данных.
- •Логическая (датологическая) модель данных
- •Реляционная модель данных
- •Описание работы с системой
- •4.1 Структура, формат и данные таблиц реляционной базы данных
- •4.2 Формы для ввода данных
- •4.2 Организация запросов
- •4.4 Организация отчетов
- •4.5 Макросы
- •4.6 Структура кнопочной формы
- •Структура кнопочного меню
- •Выводы по работе
- •Список использованной литературы
4.2 Организация запросов
В работе создана серия запросов, обеспечивающих основную функциональность базы данных. Часть запросов выполнены на языке SQLпутем ручного ввода данных, остальные – с помощью конструктора запросов. При рассмотрении будет указываться основное название и в скобках – название, вынесенное в кнопочную форму. Запросы без названия в скобках в кнопочную форму не вынесены или имеют аналогичное название. Запросы, выполненные на sql имеют соответствующую пометку в названии
SQL Запрос на сумму всех расходов. Отображает номер расхода, информацию о нём из таблиц «Учёт расходов», «Расходы подвиды» и вычисляемое поле, которое подсчитывает сумму данного расхода (произведение цены за единицу товара на количество единиц). Код запроса:
SELECT [Запрос по общей сумме каждого расхода].[номер расхода], [Запрос по общей сумме каждого расхода].[название расхода], [учёт расходов].[Код отдела], [учёт расходов].[Кол-во], [Запрос по общей сумме каждого расхода].[цена за единицу товара], [Запрос по общей сумме каждого расхода].сумма_расхода, [учёт расходов].[Дата расхода]
FROM [Запрос по общей сумме каждого расхода] INNER JOIN [учёт расходов] ON [Запрос по общей сумме каждого расхода].[номер расхода] = [учёт расходов].[номер расхода];
SQL Запрос по виду на сумму расходов. Отображает данные по виду расходов из таблицы «Виды расходов», складывая значения столбца «сумма_расхода» из SQL Запрос на сумму всех расходов группируя по видам расхода. Код запроса:
SELECT [Запрос по общей сумме каждого расхода].[Код вида], [виды расходов].[Название вида], Sum([Запрос по общей сумме каждого расхода].сумма_расхода) AS [Sum-сумма_расхода]
FROM [Запрос по общей сумме каждого расхода] INNER JOIN ([виды расходов] INNER JOIN [расходы подвиды] ON [виды расходов].[Код вида]=[расходы подвиды].[Код вида]) ON [Запрос по общей сумме каждого расхода].[Код расхода]=[расходы подвиды].[Код расхода]
GROUP BY [Запрос по общей сумме каждого расхода].[Код вида], [виды расходов].[Название вида];
SQL Запрос по виду на остаток денежных средств. Отображает данные по виду расходов из таблицы «Виды расходов», также столбец «Sum-сумма_расхода» из запроса SQL Запрос по виду на сумму расходов. Также подсчитывает остаток денежных средств на каждый вид расхода (разность предельной нормы на вид расхода и Sum-сумма_расхода).
Код запроса:
SELECT [виды расходов].[Код вида], [виды расходов].[Название вида], [виды расходов].[Предельная норма на вид расхода], [SQL Запрос по виду на сумму расходов].[Sum-сумма_расхода], [виды расходов]![Предельная норма на вид расхода]-[SQL Запрос по виду на сумму расходов]![Sum-сумма_расхода] AS остаток
FROM [виды расходов] INNER JOIN [SQL Запрос по виду на сумму расходов] ON [виды расходов].[Код вида]=[SQL Запрос по виду на сумму расходов].[Код вида]
GROUP BY [виды расходов].[Код вида], [виды расходов].[Название вида], [виды расходов].[Предельная норма на вид расхода], [SQL Запрос по виду на сумму расходов].[Sum-сумма_расхода], [виды расходов]![Предельная норма на вид расхода]-[SQL Запрос по виду на сумму расходов]![Sum-сумма_расхода];
SQL Запрос по виду есть ли перерасход (запрос по виду на перерасход). Оценивает остаток средств, посчитанный в SQL Запрос по виду на остаток денежных средств и отображает есть ли перерасход средств (да/нет):
SELECT [виды расходов].[Код вида], [виды расходов].[Название вида], [SQL Запрос по виду на остаток денежных средств].остаток, IIf([SQL Запрос по виду на остаток денежных средств]!остаток<0,Yes,No) AS [есть ли перерасход средств]
FROM [виды расходов] INNER JOIN [SQL Запрос по виду на остаток денежных средств] ON [виды расходов].[Код вида]=[SQL Запрос по виду на остаток денежных средств].[Код вида]
GROUP BY [виды расходов].[Код вида], [виды расходов].[Название вида], [SQL Запрос по виду на остаток денежных средств].остаток, IIf([SQL Запрос по виду на остаток денежных средств]!остаток<0,Yes,No);
SQL Запрос по отделу на общую сумму расходов. Отображает данные по отделу из таблицы «Копия отделы», складывая значения столбца «сумма_расхода» из SQL Запрос на сумму всех расходов группируя по отделам.
Код запроса:
SELECT [Копия отделы].[Код отдела], [Копия отделы].[Название отдела], Sum([Запрос по общей сумме каждого расхода].сумма_расхода) AS [Sum-сумма_расхода]
FROM ([Копия отделы] INNER JOIN ([расходы подвиды] INNER JOIN [учёт расходов] ON [расходы подвиды].[Код расхода] = [учёт расходов].[Код расхода]) ON [Копия отделы].[Код отдела] = [учёт расходов].[Код отдела]) INNER JOIN [Запрос по общей сумме каждого расхода] ON ([учёт расходов].[номер расхода] = [Запрос по общей сумме каждого расхода].[номер расхода]) AND ([расходы подвиды].[Код расхода] = [Запрос по общей сумме каждого расхода].[Код расхода])
GROUP BY [Копия отделы].[Код отдела], [Копия отделы].[Название отдела];
SQL Запрос по отделам на остаток средств (запрос по отделам на остаток средств). Отображает данные по отделам из таблицы «Копия отделы», также столбец «Sum-сумма_расхода» из запроса SQL Запрос по отделу на общую сумму расходов. Также подсчитывает остаток денежных средств на каждый отдел (разность предельной нормы на отдел и Sum-сумма_расхода).
Код запроса:
SELECT [Копия отделы].[Код отдела], [Копия отделы].[Название отдела], [Копия отделы].[предельная норма расхода], [SQL Запрос по отделу на общую сумму расходов].[Sum-сумма_расхода], [Копия отделы]![предельная норма расхода]-[SQL Запрос по отделу на общую сумму расходов]![Sum-сумма_расхода] AS остаток
FROM [Копия отделы] INNER JOIN [SQL Запрос по отделу на общую сумму расходов] ON [Копия отделы].[Код отдела]=[SQL Запрос по отделу на общую сумму расходов].[Код отдела]
GROUP BY [Копия отделы].[Код отдела], [Копия отделы].[Название отдела], [Копия отделы].[предельная норма расхода], [SQL Запрос по отделу на общую сумму расходов].[Sum-сумма_расхода], [Копия отделы]![предельная норма росхода]-[SQL Запрос по отделу на общую сумму расходов]![Sum-сумма_расхода];
SQL Запрос по отделу есть ли перерасход средств (запрос по отделу на перерасход средств). Оценивает остаток средств, посчитанный в SQL Запрос по отделу на остаток денежных средств и отображает есть ли перерасход средств (да/нет). А также рассчитывает размер предельной нормы средств на следующий месяц по отделу. Код запроса:
SELECT [Копия отделы].[Код отдела], [Копия отделы].[Название отдела], [SQL Запрос по отделам на остаток средств].остаток, IIf([SQL Запрос по отделам на остаток средств]!остаток<0,Yes,No) AS [есть ли перерасход средств], [остаток]+[Копия отделы]![предельная норма расхода] AS [сумма средств на следующий месяц]
FROM [Копия отделы] INNER JOIN [SQL Запрос по отделам на остаток средств] ON [Копия отделы].[Код отдела] = [SQL Запрос по отделам на остаток средств].[Код отдела]
GROUP BY [Копия отделы].[Код отдела], [Копия отделы].[Название отдела], [SQL Запрос по отделам на остаток средств].остаток, IIf([SQL Запрос по отделам на остаток средств]!остаток<0,Yes,No), [остаток]+[Копия отделы]![предельная норма расхода];
SQL Запрос по расходом отдел (Запрос по расходам отдела (с выбором)). Вводится код интересующего одела. Выводится информация о расходах, совершенных в данном отделе. Код запроса:
SELECT [учёт расходов].[номер расхода], [учёт расходов].[Код расхода], [учёт расходов].[Код вида], [Запрос по общей сумме каждого расхода].[название расхода], [копия отделы].[Код отдела], [Запрос по общей сумме каждого расхода].сумма_расхода
FROM (([виды расходов] INNER JOIN [расходы подвиды] ON [виды расходов].[Код вида] = [расходы подвиды].[Код вида]) INNER JOIN ([копия отделы] INNER JOIN [учёт расходов] ON [копия отделы].[Код отдела] = [учёт расходов].[Код отдела]) ON ([виды расходов].[Код вида] = [учёт расходов].[Код вида]) AND ([расходы подвиды].[Код расхода] = [учёт расходов].[Код расхода])) INNER JOIN [Запрос по общей сумме каждого расхода] ON ([виды расходов].[Код вида] = [Запрос по общей сумме каждого расхода].[Код вида]) AND ([учёт расходов].[номер расхода] = [Запрос по общей сумме каждого расхода].[номер расхода])
WHERE ((([копия отделы].[Код отдела]) Like [введите номер отдела]));
Запрос по сотрудникам. Даёт информацию о коде и ФИО сотрудников и о коде отдела, к которому он относится. Информация группируется по коду отдела.
Запросы на расходы по сотруднику (Запросы по расходам сотрудникам, совершавшим расходы). Отображает информацию из таблиц «Сотрудники» и «Учёт расходов». Выводит данные только о сотрудниках, совершавших расходы.
Запрос по должности работника (Запрос по должности работника и др. данным сотрудника (с выбором). Необходимо ввести код интересующего сотрудника. Выводит информацию о сотруднике и отделе, в котором он состоит.
Запрос по общей сумме каждого расхода. Отображает информацию из таблиц «Учёт расходов» и «расходы подвиды». И подсчитывает сумму каждого расхода (произведение цены за единицу товара на количество единиц).
Запрос 1. Дает информацию о виде расхода и его названии и цене за единицу.
Запрос 2 (Запрос по кол-ву штук каждого расхода). Сделан на основе Запроса1. В добавление к информации из Запроса 1 отображается кол-во приобретенной продукции (если она приобреталась).
Запрос для новых отделов на создание новой (промежуточной) таблицы «Отделы следующий месяц». Создает таблицу аналогичную таблице «Копия отделы», но с новым столбцом «сумма средств на следующий месяц» (из SQL Запрос по отделу есть ли перерасход средств (запрос по отделу на перерасход средств) вместо «предельной суммы средств».
Запрос на обновление предельных средств. Обновляет данные в столбце «предельная норма расхода» таблицы «Копия отделы» на основе данных вспомогательной таблицы «Отделы следующий месяц».
Запрос на удаление старых расходов. Удаляет расходы в пределах вводимых дат. В нашем случае предполагается, что это данные за прошедший месяц, т.е. с первого по последнее число прошедшего месяца. В данном случает удалим данные только за часть месяца.