Создание базы данных для автопарка (“Машины”, “Механик”, “Ремонт”), страница 7

Так как каждая машина может ремонтироваться несколько раз, подсчет процента дешевых машин производится не от количества машин, а от количества ремонтов.

Функция 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