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

За период

Данная форма позволяет просмотреть ремонты, зарегистрированные в БД за какой-то период времени.

Пользователь может задать начало и конец интервала времени, ремонты за который его интересуют, и выбрать, какие из них отображать: завершенные, незавершенные или все.

SQL-запрос, возвращающий нужные данные:

select r.repair_startdate,

r.machine_code,

rt.repairtype_name,

rt.repairtype_cost,

r.repair_note

from repair r

inner join repairtype rt on r.repairtype_code = rt.repairtype_code

where r.repair_startdate >= :start

and r.repair_startdate <= :end

and r.repair_done like :done

order by r.repair_startdate

Реализация в приложении почти ничем не отличается от предыдущих двух пунктов, разница только в текстах запросов, передаваемых объектам OleDbCommand.

За год

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

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

select m.month_code as MONTH_CODE,

rt.repairtype_name as REPAIRTYPE_NAME,

count(r.machine_code) as REPAIRS

from MONTHS m

left join REPAIR r

on extract(month from r.repair_startdate) = m.month_code

inner join repairtype rt

on r.repairtype_code = rt.repairtype_code

where r.repair_startdate >= :start

and r.repair_startdate <= :end

group by m.month_code, rt.repairtype_name

Функция реализации данного меню в приложении слишком большая, чтобы приводить ее целиком. По структуре ее можно разбить на две части. Первая часть типична и похожа на приведенные выше фрагменты кода, в ней осуществляется выполнение запроса и запись его результатов в объект DataTable. Во второй части происходит обращение к функциям приложения Microsoft Excel черезCOM-библиотеку Microsoft Excel ObjectLibrary12.0. Наше приложение экспортирует данные изDataTableв таблицу Excel, и строит по ним график, который потом преобразуется в картинку форматаBMPи вставляется в объектPictureBoxна форме. Все это проделывается в фоновом режиме, так что пользователь видит только конечный результат.

Выше на картинке показан пример работы данной функции.

За все время

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

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

SQL-запрос, вычисляющий необходимые данные:

select rt.REPAIRTYPE_NAME,

case when c.NUM is not null then c.NUM else 0 end

from REPAIRTYPE rt

left join

(select rt.REPAIRTYPE_NAME as REPAIRTYPE_NAME, count(*) as NUM

from REPAIRTYPE rt

inner join REPAIR r

on r.REPAIRTYPE_CODE = rt.REPAIRTYPE_CODE

group by rt.REPAIRTYPE_NAME) as c

on rt.REPAIRTYPE_NAME = c.REPAIRTYPE_NAME

Реализация данной функции похожа на предыдущий пункт. После выполнения запроса так же происходит обращение к функциям Excel и экспорт графика из Excel в PictureBoxна форме.

Отчеты

В данном меню пользователю предлагается создать электронный документ с отчетом о ремонтах, выполненных за год, либо за месяц. Отчет пишется приложением в формате Word2007, с использованиемCOM-компонентовMicrosoftWordObjectLibrary12.0.