Создание базы данных «Пресса», страница 5

Найти(в целом):

LOCAL tmp1(1)

LOCAL tmp(1)

SELECT count(press.name_press);

FROM pressa!press;

INTO ARRAY tmp;

SELECT count(press.name_press);

FROM pressa!press;

WHERE press.price <=thisform.text1.value;

INTO ARRAY tmp1;

result=tmp1/tmp*100

MessageBox("Доля дешевой прессы: " + alltrim(str(result))+" %")

Найти(с учетом издательства):

LOCAL tmp1(1)

LOCAL tmp(1)

SELECT count(press.name_press);

FROM pressa!press;

INTO ARRAY tmp;

SELECT count(press.name_press);

FROM pressa!press;

WHERE press.price <=thisform.text1.value;

AND press.id_publisher==(select publisher.id_publisher FROM pressa!publisher WHERE publisher.publisher_=thisform.combo1.value);

INTO ARRAY tmp1;

result=tmp1/tmp*100

MessageBox("Доля дешевой прессы: " + alltrim(str(result))+" %")

Результат работы запросов:

      

Рис.31.Результаты работы  формы “form_11.scx”


Form_12.scx

Найти среднюю стоимость прессы, проданной за определенный промежуток времени (ввод интервала)

Рис.32. Форма “form_12.scx”

Обработка кнопки «Найти»:

LOCAL tmp(1)

date_1=thisform.text1.value

date_2=thisform.text2.value

SELECT avg(press.price);

FROM pressa!press;

WHERE press.date_of_sale between date_1 AND date_2;

INTO ARRAY tmp

MessageBox("Средняя стоимость прессы,проданной за данный период: " + alltrim(str(tmp)))

SELECT press.name_press, press.price,press.date_of_sale;

FROM pressa!press;

WHERE press.date_of_sale between date_1 AND date_2;

   

Рис.33.Результаты работы  формы “form_12.scx”


Form_13.scx

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

Рис.34. Форма “form_13.scx”

Обработка кнопки «Найти»:

LOCAL tmp(1)

LOCAL tmp1(1)

SELECT DISTINCT(press.id_publisher);

FROM pressa!press;

WHERE press.id_publisher==(SELECT publisher.id_publisher FROM pressa!publisher WHERE publisher.publisher_=thisform.combo1.value);

INTO ARRAY tmp

SELECT AVG(press.price) FROM pressa!press WHERE press.id_publisher=tmp;

INTO ARRAY tmp1

MessageBox("Средняя стоимость прессы заданного издательства: " +alltrim(str(tmp1)))

SELECT press.name_press, press.price, publisher.publisher FROM pressa!press inner join pressa!publisher on press.id_publisher==publisher.id_publisher WHERE press.price>=(SELECT AVG(press.price);

FROM pressa!press WHERE press.id_publisher=tmp);

ORDER BY press.price

Результат работы запроса:

   

Рис.35.Результаты работы  формы “form_13.scx”


Form_14.scx

Найти прессу, которую лучше всего раскупают, указать параметры (стоимость, издательство)

Рис.36. Форма “form_14.scx”

Обработка кнопки «Самая популярная пресса»:

SELECT Press.name_press, Publisher.publisher_, Press.price, Press.sold_press;

FROM  pressa!press INNER JOIN pressa!publisher;

ON  Press.id_publisher = Publisher.id_publisher;

WHERE Press.sold_press = (SELECT Max(press.sold_press);

FROM pressa!press )

Результат работы запроса:

Рис.37.Результаты работы  формы “form_14.scx”

8. Выводы:

В ходе выполнения расчетно-графической работы были закреплены (и приобретены новые) навыки работы в среде Visual FoxPro 6.0. Получен опыт проектирования баз данных, работы с ними посредством запросов на языке SQL, а также приобретен опыт в управлении базами данных. Также были закреплены навыки работы с меню (Command, Submenu, Procedure) и с формами (CommandButton, Combo Box, Text Box, Edit Box, Container и др.)

9. Список литературы:

1.   Лекции по дисциплине «Базы данных»

2.   Visual FoxPro 6.0 Help System (пакет MSDN)