Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пояснительная к курсачу.docx
Скачиваний:
67
Добавлен:
12.03.2015
Размер:
749.7 Кб
Скачать

План на текущий месяц

В данном окне отображается таблица с теми ремонтами, которые надо закончить в текущем месяце. Для удобства тут же показывается сегодняшняя дата. Внешний вид формы:

Таблица формируется с помощью следующего 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

Запрос ищет все незавершенные ремонты, дата окончания для которых меньше сегодняшней даты. Кроме того, он выводит количество дней, на которые был просрочен каждый ремонт.

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

Анализ видов ремонта

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