Поиск ремонтов.
Проектирование и разработка базы данных и приложения "Техническое обслуживание станков" средствами СУБД Firebird
Помимо всех ремонтов заданного вида на форме отображается общая сумма этих ремонтов. Таким образом, форма для своей работы использует сразу два запроса, на поиск ремонтов и на вычисление их общей стоимости. В данном пункте меню реализуется функция просмотра ремонтов из таблицы REPAIR только одного конкретного вида. Вид ремонта задается пользователем через выпадающий список. Вид формы: Для того… Читать ещё >
Поиск ремонтов. Проектирование и разработка базы данных и приложения "Техническое обслуживание станков" средствами СУБД Firebird (реферат, курсовая, диплом, контрольная)
Данный пункт меню дает пользователю возможность просматривать зарегистрированные в системе ремонты, фильтруя их по различным параметрам, таким как вид ремонта, марка ремонтируемого станка, дата регистрации. Это меню состоит из нескольких подпунктов:
По виду
В данном пункте меню реализуется функция просмотра ремонтов из таблицы REPAIR только одного конкретного вида. Вид ремонта задается пользователем через выпадающий список. Вид формы:
Рис. 16.
Помимо всех ремонтов заданного вида на форме отображается общая сумма этих ремонтов. Таким образом, форма для своей работы использует сразу два запроса, на поиск ремонтов и на вычисление их общей стоимости.
Запрос на поиск ремонтов:
select r. REPAIR_STARTDATE,.
r.MACHINE_CODE,.
rt.REPAIRTYPE_NAME,.
rt.REPAIRTYPE_COST,.
r.REPAIR_DONE,.
r.REPAIR_NOTE.
from REPAIR r.
inner join REPAIRTYPE rt.
on r. REPAIRTYPE_CODE = rt. REPAIRTYPE_CODE.
where rt. REPAIRTYPE_CODE = :rt_code.
order by REPAIR_STARTDATE asc.
Запрос выбирает из REPAIR все ремонты, код вида ремонта которых равен заданному пользователем (параметр :rt_code определяется через выбранный элемент выпадающего списка). Второй запрос аналогичен этому, но вместо выборки всех ремонтов, удовлетворяющих условию, он вычисляет их общую стоимость:
select.
case.
when (sum (rt.REPAIRTYPE_COST) is null).
then 0.
else.
sum (rt.REPAIRTYPE_COST).
end as S.
from REPAIR r.
inner join REPAIRTYPE rt.
on r. REPAIRTYPE_CODE = rt. REPAIRTYPE_CODE.
where rt. REPAIRTYPE_CODE = :rt_code.
Для того, чтобы результат мог корректно отобразиться в текстовом поле, значение null, возвращаемое запросом, заменяется на 0.
Реализация в приложении:
/* просмотр ремонтов по виду */.
private void btnRepairTypeOK_Click (object sender, EventArgs e) {.
// извлечение выбранного типа из comboBox’а.
DataRowView drw_type = (DataRowView)comboRepairType.SelectedItem;
DataRow dr_type = drw_type.Row;
int repairtype_code = dr_type.Field («REPAIRTYPE_CODE»);
// запрос и заполнение таблицы.
OleDbCommand cmd = new OleDbCommand (««, con, trans);
cmd.Parameters.AddWithValue («rt_code», repairtype_code.ToString ());
OleDbDataAdapter ad = new OleDbDataAdapter (cmd);
dtRepairTypeQ.Clear ();
ad.Fill (dtRepairTypeQ);
dgRepairType.DataSource = dtRepairTypeQ;
ad.Dispose ();
cmd.Dispose ();
// запрос на вычисление суммы.
cmd = new OleDbCommand (««, con, trans);
cmd.Parameters.AddWithValue («rt_code», repairtype_code.ToString ());
ad = new OleDbDataAdapter (cmd);
dtRepairTypeQSum.Clear ();
ad.Fill (dtRepairTypeQSum);
txtRepairTypeSum.Text.
= ((decimal)dtRepairTypeQSum.Rows[0][" S" ]).ToString ();
cmd.Dispose ();
ad.Dispose ();
}.
Пример работы запроса:
Рис. 17.