Учебно-справочное пособие по СУБД Informix

         

Пример программы, выдающей отчет



Пример программы, выдающей отчет

DATABASE zawod MAIN DEFINE zapisx record like kadry.* DEFINE simw char (200), zapr char (300),fn char (18)

OPEN form maxprim from "maxprim" DISPLAY form maxprim # вывести экранную форму

CONSTRUCT BY NAME simw ON kadry.* # Введение критериев выбора # с экрана LET zapr="select * from kadry where ", simw clipped," order by tabnom "

MESSAGE simw PREPARE selpr FROM zapr # Изготовление запроса DECLARE qquer CURSOR FOR selpr # Объявление курсора для него

DISPLAY "Не забудьте нажать CTRL-O" AT 2,40 PROMPT "Файл, куда выводить отчет? или CR, если на экран: " FOR fn

IF length(fn)=0 then START REPORT kadryrep # на экран else START REPORT kadryrep TO fn # в файл END IF

# выполнить запрос и сбросить выбранные строки в отчет FOREACH qquer into zapisx.* # Очередную строку из курсора OUTPUT TO REPORT kadryrep(zapisx.*) # поместить в отчет END FOREACH FINISH REPORT kadryrep # Вывести результаты отчета END MAIN

REPORT kadryrep(z) DEFINE nameceh like ceh.nameceh DEFINE z record like kadry.* # nomerceh int, # номер цеха # tabnom serial, # табельн. номер # fio char(20), # фамилия # dolvn char(20), # должность # zarplata money(16,2), # зарплата # datarovd date # дата рожд. OUTPUT left margin 0 right margin 80 top margin 0 bottom margin 0 page length 23 ORDER BY z.nomerceh, z.tabnom # Упорядочить

FORMAT PAGE HEADER print "-------------------------------------------------------" print "цех|таб.ном|фио |должность |зарплата| дата рожд" print "_______________________________________________________"

ON EVERY ROW print z.nomerceh using "##", column 4,z.tabnom using "#####", column 13,z.fio clipped, column 28,z.dolvn clipped, column 43,z.zarplata using "$####.##", column 53,z.datarovd using "dd-mm-yyyy"

BEFORE GROUP OF z.nomerceh select @nameceh into nameceh from ceh where nomerceh=z.nomerceh skip to top of page skip 1 line print "Цех ",nameceh skip 1 line


AFTER GROUP OF z.nomerceh need 2 lines print " В цехе ",nameceh clipped,2 spaces, group count(*) using "#####" ," человек, " print " Средняя зарплата ", group avg(z.zarplata) using "##### руб.## коп"


PAGE TRAILER print "заполнена страница номер", pageno pause "нажмите ВВОД"
END REPORT
Вот что увидит на пользователь во время работы программы: +-------------------------------------------------------------+ |Укажите файл, куда выводить отчет, или CR, если на экран: | | Не забудьте нажать CONTROL-О| | | |---------------------------------------------- | | цех [1:4] [ ] | | таб.номер [ ] | | фамилия [*ов ] | | должность [ ] | | зарплата [>500 ] | |дата рождения [ ] | | | | | nomerceh between 1 and 4 and fio matches "*о*" and zarplata>500 | | +-------------------------------------------------------------+
---------------------------------------------------------------------------
цех|таб.ном|фио |должность |зарплата| дата рожд _______________________________________________________________
Цех дирекция
1 34 иванов директор $ 4000.00 1 35 кононов зав. по снабжению$ 4000.00 В цехе дирекция 2 человек, Средняя зарплата 4000 руб.00 коп
заполнена страница номер 1 нажмите ВВОД ---------------------------------------------------------------------------
цех|таб.ном|фио |должность |зарплата| дата рожд _______________________________________________________________
Цех литейный
2 12 окунев рабочий $ 2000.00 2 14 липко лаборант $ 2000.00 2 18 пухов мастер $ 2000.00 2 21 сухов рабочий $ 2000.00 2 24 угольков рабочий $ 2000.00 В цехе литейный 5 человек, Средняя зарплата 2000 руб.00 коп
заполнена страница номер 2 нажмите ВВОД ---------------------------------------------------------------------------
цех|таб.ном|фио |должность |зарплата| дата рожд _______________________________________________________________
Цех гараж
4 9 потруев слесарь $ 1230.00 4 12 гундосов шофер $ 2000.00 В цехе гараж 2 человек, Средняя зарплата 1615 руб.00 коп
заполнена страница номер 3 нажмите ВВОД

Содержание раздела