Программирование в среде FoxPro. Создание базы данных "Антиквариат", страница 3

                  AND MONTH(pro.data_prodaghi) in (1,2,3);

                  and YEAR(pro.data_prodaghi) = thisform.Text1.value;

into cursor tmp

select count(tmp.товар) ;

from tmp ;

into array arr

thisform.Text2.value=str(arr(1))

ENDIF

Для выполнения этого задания с другими периодами используются практически такие же запросы, за исключением выбора месяцев и оператора if, в котором условие будет соответственно

if thisform.Optiongroup1.Option2.Value=1 && за 2ой квартал

if thisform.Optiongroup1.Option3.Value=1 && за 3ий квартал

if thisform.Optiongroup1.Option4.Value=1 && за 4ый квартал

if thisform.Optiongroup1.Option5.Value=1 && за год

Рис. 17. Результат работы запроса 5

Задание 6

Найти товары, поставляемые заданным поставщиком, чья дата продажи находится в заданных пределах.

Рис. 18. Форма для выполнения шестого задания

Текст запроса:

CLOSE TABLES

select ;

            pos.psevdonim as поставщик,;

            tip.tip as тип,;

            pro.Naimenovanie as товар,;

            pro.data_prodaghi as дата_продажи;

from "G:\bd\irkrgr\irgr\pro.dbf",;

            "G:\bd\irkrgr\irgr\pos.dbf",;

            "G:\bd\irkrgr\irgr\tip.dbf";            

where pro.id_tip = tip.id_t;

            AND pro.id_postav = pos.id_pos;

            AND pos.psevdonim = thisform.Combo1.DisplayValue;

            AND pro.data_prodaghi => CTOD(thisform.Text2.value);

         AND pro.data_prodaghi <= CTOD(thisform.Text3.value)

Рис. 19. Результат работы запроса 6

Задание 7

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

Рис. 20. Форма для выполнения седьмого задания

Текст запроса:

SELECT ;

            tip.tip as тип,;

            pro.naimenovanie as товар,;

            stran.strana as место_выпуска,;

            pro.cena as цена;

FROM ;

            pro,tip,stran;

WHERE ;

            pro.id_tip = tip.id_t;

            AND pro.id_stra = stran.id_stran;

            AND stran.strana = thisform.Combo1.Value;

            AND pro.cena => VAL(thisform.Text1.Value);

         AND pro.cena <= VAL(thisform.Text2.Value)

Рис. 21. Результат работы запроса 7

Задание 8

Найти долю антиквариата, проданного за определенный период от общего времени продажи.

Рис. 22. Форма для выполнения восьмого задания

Текст запроса:

select count(pro.naimenovanie) as prodan;

from pro,tip;

where pro.id_tip = tip.id_t;

            AND pro.data_prodaghi => CTOD(thisform.Text1.Value);

            AND pro.data_prodaghi <= CTOD(thisform.Text2.Value);

into cursor vrem

select count(pro.naimenovanie) as vse;

from pro;

into cursor vrem2

thisform.Text3.value=(STR(100*(vrem.prodan/vrem2.vse))+"%")

Рис. 23. Результат работы запроса 8

Задание 9

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

Рис. 24. Форма для выполнения девятого задания

Текст запроса:

SELECT tip.tip as тип,;

            pro.naimenovanie as товар,;

            pos.psevdonim as поставщик,;

            stran.strana as страна,;

            pro.cena as стоимость;

FROM tip,pro,pos,stran;

WHERE ;

            tip.id_t = pro.id_tip;

            AND pro.id_postav = pos.id_pos;

            AND pro.id_stra = stran.id_stran;

            AND pos.psevdonim = thisform.Combo1.Value;

            AND stran.strana = thisform.Combo3.Value;

            AND pro.cena =>(;

                        SELECT AVG(pro.cena);

                        FROM pro,tip;

                        WHERE pro.id_tip = tip.id_t;

                     AND tip.tip = thisform.Combo2.Value)