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

По срокам

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

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

Код SQL-запроса:

select rt.REPAIRTYPE_CODE,

rt.REPAIRTYPE_NAME,

rt.REPAIRTYPE_DURATION,

rt.REPAIRTYPE_COST,

rt.REPAIRTYPE_NOTE

from REPAIRTYPE rt

where rt.REPAIRTYPE_DURATION < :dur

Реализация в приложении:

/* виды ремонтов по длительности */

private void btnRepairTypeDurationOK_Click(object sender, EventArgs e) {

string dur = txtRepairTypeDuration.Text;

int d = 0;

try {

d = int.Parse(dur);

} catch (Exception ex) {

MessageBox.Show(ex.Message, "Ошибка");

return;

}

if (d < 1) {

MessageBox.Show("Задана длительность меньше одного дня", "Ошибка");

return;

}

OleDbCommand cmd = new OleDbCommand("<текст запоса>", con, trans);

cmd.Parameters.AddWithValue("dur", dur);

OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);

dtRepairTypeDuration.Clear();

adapter.Fill(dtRepairTypeDuration);

dgRepairTypeDuration.DataSource = dtRepairTypeDuration;

adapter.Dispose();

cmd.Dispose();

}

Результат работы запроса (с заданной длительностью, например, 50 дней):

По дате окончания

На этой форме пользователь может посмотреть, какие виды ремонта получится закончить к определенном сроку, если начать с сегодняшнего дня.

SQL-запрос, решающий данную задачу:

select rt.REPAIRTYPE_CODE,

rt.REPAIRTYPE_NAME,

rt.REPAIRTYPE_DURATION,

rt.REPAIRTYPE_COST,

rt.REPAIRTYPE_NOTE

from REPAIRTYPE rt

where current_date + rt.REPAIRTYPE_DURATION >= :startdate

and current_date + rt.REPAIRTYPE_DURATION <= :enddate

Запрос возвращает все виды ремонтов, дата окончания которых укладывается в интервал между :startdateи:enddate. Эти параметры задаются через компоненты формы. Внешний вид формы с примером выполнения запроса:

Реализация в приложении:

/* типы ремонта по возможной дате окончания */

private void btnRepairTypesDateOK_Click(object sender, EventArgs e) {

string start = txtRepairTypesDateStart.Text;

string end = txtRepairTypesDateEnd.Text;

// проверка введенной даты

try {

DateTime dstart = DateTime.Parse(start);

DateTime dend = DateTime.Parse(end);

} catch (Exception ex) {

MessageBox.Show(ex.Message, "Ошибка");

return;

}

// запрос

OleDbCommand cmd = new OleDbCommand("<текст запроса>", con, trans);

cmd.Parameters.AddWithValue("startdate", start);

cmd.Parameters.AddWithValue("enddate", end);

OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);

dtRepairTypeDate.Clear();

adapter.Fill(dtRepairTypeDate);

dgRepairTypeDate.DataSource = dtRepairTypeDate;

adapter.Dispose();

cmd.Dispose();

}

По стоимости

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

Как видно по рисунку, параметры запроса берутся из текстовых полей «От» и «До». Выполнение запроса происходит при нажатии на кнопку «ОК».

Код запроса:

select REPAIRTYPE_CODE,

REPAIRTYPE_NAME,

REPAIRTYPE_DURATION,

REPAIRTYPE_COST,

REPAIRTYPE_NOTE

from REPAIRTYPE

where REPAIRTYPE_COST >= :lower and REPAIRTYPE_COST <= :upper

Реализация в приложении:

/* типы ремонта - в интервале стоимости */

private void btnRepairTypeCostOK_Click(object sender, EventArgs e) {

// проверка допустимых значений

float lower = 0, upper = 0;

try {

lower = float.Parse(txtRepairTypeCostFrom.Text);

upper = float.Parse(txtRepairTypeCostTo.Text);

} catch (Exception ex) {

MessageBox.Show("Неверный числовой формат", "Ошибка преобразования");

return;

}

if ((lower < 0) || (upper < lower)) {

MessageBox.Show("Неверный интервал стоимости", "Ошибка");

return;

}

/*

... запрос, вставка результата в таблицу. см. реализацию предыдущих

пунктов

*/

}