Так как каждая машина может ремонтироваться несколько раз, подсчет процента дешевых машин производится не от количества машин, а от количества ремонтов.
Функция Click кнопки “Найти” (form_q11.Command1):
if form_q11.optiongroup1.optionAll.value = 1
select * from repairs into cursor cur
n_all = reccount()
select * from repairs into cursor cur where cost < val(form_q11.textMaxCost.text)
n_chip = reccount()
messagebox(str((n_chip/n_all)*100) + "%", "Доля дешевых ремонтов")
else
select * from mechanics into cursor cur
n_types = reccount()
strRes = ""
for i=0 to n_types-1
n_chip=0
select mechanics.name from mechanics into array arr_name where mechanics.mech_id = i;
n_all = 0
select * from mechanics inner join repairs on mechanics.mech_id=repairs.mech_id into cursor cur1;
where mechanics.mech_id = i
n_all = reccount()
select * from cur1 into cursor cur2 where cost < val(form_q11.textMaxCost.text)
n_chip = reccount()
if n_all>0
strRes = strRes + alltrim(arr_name[1]) + ":" + str((n_chip/n_all)*100) + "%" + "; "
else
strRes = strRes + alltrim(arr_name[1]) + ": - " + "; "
endif
endfor
MessageBox(strRes, "Доля дешевых ремонтов для механиков")
endif
В данном запросе в цикле производится подсчет доли дешевых по стоимости ремонта машин для каждого механика. На каждой итерации цикла запрашивается ФИО механика, количество ремонтов для механика вообще и количество дешевых ремонтов. Вычисляется необходимая величина и вместе с ФИО добавляется к результирующей строке, которая выводится с помощью MessageBox.
Результаты запроса для каждого механика и ограничения в 5000 представлены на рис. 30.
Рис. 30. Результаты поиска доли дешевых по стоимости ремонта машин
Поиск механиков, стаж которых лежит в заданных пределах для заданного вида ремонта
Для поиска механиков по стажу используется форма form_q12 (рис. 31).
Рис. 29. Форма для поиска механиков по стажу
Таблица 6. Некоторые свойства элементов управления формы form_q12
Тип элемента управления |
Объект |
Свойство или функция |
Значение |
ListBox |
ListRepTypes |
RowSource |
repair_types.rep_type |
RowSourceType |
6 - Fields |
Функция Click кнопки “Найти” (form_q12.Command1):
select * from mechanics inner join repair_types on mechanics.rep_id = repair_types.rep_id;
where repair_types.rep_type = form_q12.ListRepTypes.value and;
mechanics.service_len between val(form_q12.textMin.text) and val(form_q12.textMax.text)
Для добавления ремонта используется форма form_add_repair (рис. 32)
Рис. 32. Форма для добавления ремонта
Таблица 7. Некоторые свойства элементов управления формы form_add_repair
Тип элемента управления |
Объект |
Свойство или функция |
Значение |
ListBox |
ListCars |
RowSource |
cars.car_id, variety, manuf_year, exploitation, cost |
RowSourceType |
6 - Fields |
||
ListMechs |
RowSource |
mechs_reps.mech_id, name,born_year, service_len, rep_type |
|
RowSourceType |
6 - Fields |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.