- •Пояснительная записка
- •Введение
- •Анализ предметной области
- •Структура базы данных
- •Клиент для работы с бд
- •Меню соединения с базой данных
- •Главное меню приложения
- •Просмотр базы данных
- •Регистрация ремонтов
- •План на текущий месяц
- •Просроченные ремонты
- •Анализ видов ремонта
- •По срокам
- •По дате окончания
- •По стоимости
- •Поиск ремонтов
- •По виду
- •По марке
- •За период
- •За все время
- •За месяц
- •Заключение
- •Источники
План на текущий месяц
В данном окне отображается таблица с теми ремонтами, которые надо закончить в текущем месяце. Для удобства тут же показывается сегодняшняя дата. Внешний вид формы:
Таблица формируется с помощью следующего SQL-запроса.
select r.MACHINE_CODE as MACHINE_CODE,
rt.REPAIRTYPE_NAME as REPAIR_NAME,
r.REPAIR_STARTDATE as STARTDATE,
r.REPAIR_STARTDATE + rt.REPAIRTYPE_DURATION as ENDDATE
from REPAIR r
inner join REPAIRTYPE rt
on r.REPAIRTYPE_CODE = rt.REPAIRTYPE_CODE
inner join
(select current_date as DT from rdb$database) as curdate
on extract(MONTH from (r.REPAIR_STARTDATE + rt.REPAIRTYPE_DURATION))
= extract(MONTH from curdate.DT)
and extract(YEAR from (r.REPAIR_STARTDATE + rt.REPAIRTYPE_DURATION))
= extract(YEAR from curdate.DT)
where r.REPAIR_DONE = 'N'
Таким образом, запрос возвращает все ремонты из БД, которые еще не закончены (r.REPAIR_DONE = 'N'), и в дате окончания которых указан текущий месяц. Дата окончания определяется как сумма даты начала ремонта и длительности заданного вида ремонта. Данные заносятся в таблицу при загрузке приложения через вызов специального методаmonth_plan_load():
/* загрузка страницы с планом ремонтов */
private void month_plan_load() {
txtMonthPlanToday.Text = DateTime.Today.ToLongDateString();
OleDbCommand cmd = new OleDbCommand("<текст запроса>", con, trans);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
dtMonthPlan.Clear();
adapter.Fill(dtMonthPlan);
dgMonthPlan.DataSource = dtMonthPlan;
adapter.Dispose();
cmd.Dispose();
}
Просроченные ремонты
Пункт меню «Просроченные ремонты» показывает те ремонты, которые еще не выполнены, но уже должны были быть закончены. Внешний вид формы:
Форма аналогична предыдущей, за исключением того, что была добавлена кнопка «Обновить», по которой запрос вызывается повторно, учитывая новые данные, добавленные в REPAIR, или другие изменения, произошедшие с момента последнего обновления.
Запрос, возвращающий необходимые данные:
select r.MACHINE_CODE as MACHINE_CODE,
rt.REPAIRTYPE_NAME as REPAIR_TYPE,
r.REPAIR_STARTDATE as STARTDATE,
r.REPAIR_STARTDATE + rt.REPAIRTYPE_DURATION as ENDDATE,
cur_date.DT-(r.REPAIR_STARTDATE+rt.REPAIRTYPE_DURATION) as OVERDUE
from (select current_date as DT from rdb$database) as cur_date,
REPAIR r
inner join REPAIRTYPE rt
on r.REPAIRTYPE_CODE = rt.REPAIRTYPE_CODE
where r.REPAIR_DONE = 'N'
and cur_date.DT > r.REPAIR_STARTDATE + rt.REPAIRTYPE_DURATION
Запрос ищет все незавершенные ремонты, дата окончания для которых меньше сегодняшней даты. Кроме того, он выводит количество дней, на которые был просрочен каждый ремонт.
Как и в случае с предыдущей формой, таблица заполняется автоматически при загрузке главного окна. Это делается с помощью специального метода, аналогичного приведенному выше. Этот же метод вызывается и при нажатии на кнопку «Обновить».
Анализ видов ремонта
Данный пункт меню дает возможность пользователю выбрать такие виды ремонта, параметры которых удовлетворяют определенным условиям.