Программирование в среде Visual Fox Pro. База данных «Факультет», страница 7

select * from Students_2007_Semestr1 into cursor cur where Students_2007_Semestr1.в_академ_отпуске = "да"

n_old = reccount()

res = (n_old / n_all)*100

select * from Students_2007_Semestr1 into cursor cur ;

where Students_2007_Semestr1.в_академ_отпуске = "да"   and Students_2007_Semestr1.обучение = 1

n_budjet = reccount()

res_1 = (n_budjet / n_all)*100

select * from Students_2007_Semestr1 into cursor cur ;

where Students_2007_Semestr1.в_академ_отпуске = "да"   and (Students_2007_Semestr1.обучение = 2 or Students_2007_Semestr1.обучение = 3)

n_kontrakt = reccount()

res_2 = (n_kontrakt / n_all)*100

MessageBox("Количество студентов, находящихся в академическом отпуске: " +  str(n_old) + chr(13) + "из них бюджетников: " +  str(n_budjet) + chr(13) + "контрактников: " + str(n_kontrakt))

select Students_2007_semestr1.фамилия, Students_2007_semestr1.имя, Students_2007_semestr1.отчество,;

Students_2007_semestr1.курс, Students_2007_semestr1.группа, form_obuch.обучение_, Students_2007_Semestr1.в_академ_отпуске ;

 from Students_2007_Semestr1;

 INNER JOIN fakultet!form_obuch              ON  form_obuch.id_ = Students_2007_semestr1.обучение ;

where Students_2007_Semestr1.в_академ_отпуске = "да"

VIII.    Найти студентов и их количество, проживающих в общежитии, приехавших из стран СНГ, с дальнего зарубежья, учащихся по договору К-3 (рис.26, 27):

Текст программы для кнопки «приехавших из стран СНГ»:

select * from Students_2007_Semestr1 into cursor cur

n_all = reccount()

select * from Students_2007_Semestr1 into cursor cur where Students_2007_Semestr1.откуда = "из СНГ"

n_old = reccount()

MessageBox("Количество студентов, приехавших из СНГ: " +  str(n_old) )

select Students_2007_semestr1.фамилия, Students_2007_semestr1.имя, Students_2007_semestr1.отчество,;

Students_2007_semestr1.курс, Students_2007_semestr1.группа, Students_2007_Semestr1.откуда ;

 from Students_2007_Semestr1;

where Students_2007_Semestr1.откуда = "из СНГ" 

Рис.26.Форма для запроса VIII.

                       

Рис.27. Результат выполнения запроса  VIII.

IX.       Найти студентов, чей средний балл выше, чем средний балл по заданной дисциплине, заданного курса, заданного периода (рис.28, 29):

Код запроса:

date_n = thisform.Pageframe1.Page3.Pageframe1.Page9.Edit2.value +'/'+ thisform.Pageframe1.Page3.Pageframe1.Page9.Edit1.value +'/'+ thisform.Pageframe1.Page3.Pageframe1.Page9.Edit3.value

date_k = thisform.Pageframe1.Page3.Pageframe1.Page9.Edit5.value +'/'+ thisform.Pageframe1.Page3.Pageframe1.Page9.Edit4.value +'/'+ thisform.Pageframe1.Page3.Pageframe1.Page9.Edit6.value

date_n = CTOD(date_n)

date_k = CTOD(date_k)

if predmet_1.дисциплина = thisform.Pageframe1.Page3.Pageframe1.Page9.Combo1.value

id_predm = predmet_1.id_predmet

endif

select avg(val(Students_2007_Semestr1.оценка_1)) as Среднее  from Students_2007_Semestr1  into cursor cur ;

where (Students_2007_semestr1.предмет_1 = id_predm)  and (Students_2007_Semestr1.курс = val(thisform.Pageframe1.Page3.Pageframe1.Page9.Combo2.value)) and (Students_2007_Semestr1.дата_сдачи_1 between date_n and date_k);

ball_pred_1 = Среднее

n_pred_1 = reccount()

select avg(val(Students_2007_Semestr1.оценка_2))as Среднее from Students_2007_Semestr1  into cursor cur_1;

where (Students_2007_semestr1.предмет_2 = id_predm) and (Students_2007_Semestr1.курс = val(thisform.Pageframe1.Page3.Pageframe1.Page9.Combo2.value)) and (Students_2007_Semestr1.дата_сдачи_2 between date_n and date_k)

ball_pred_2 = Среднее

n_pred_2 = reccount()

select avg(val(Students_2007_Semestr1.оценка_3)) as Среднее from Students_2007_Semestr1 into cursor cur_2;

where (Students_2007_semestr1.предмет_3 = id_predm) and (Students_2007_Semestr1.курс = val(thisform.Pageframe1.Page3.Pageframe1.Page9.Combo2.value)) and (Students_2007_Semestr1.дата_сдачи_3 between date_n and date_k)