ARD отчет2

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
GGG777
Сообщения: 4
Зарегистрирован: 29 мар 2005, 17:49

ARD отчет2

Сообщение GGG777 »

Необходимо получить отчет в котором содержатся следующие данные:
1. Наименование контрагента (заказчика).
2. Количество отработанного на него времени.
3. Пробег автомобилей
4. Перепробег
5. Сумма за часы и перепробег
6. Итоговые суммы по контрагенту (форма в приложении).
Для реализации данного отчета был написан ARD отчет , содержащий два запроса :
.Create view t2 as select spzakaz.*,tarifn.*,tarifav.*
where ((spzakaz.ckatusl/==katusl.nrec))and t2.spzakaz.ckatzak=nkatzak
and katusl.name='за перепробег';
.Create view R1 as SELECT putlst.npl,katusl.name,katzak.nrec,spzakaz.kol,spzakaz.sumusl,katorg.name
where((katzak.cputlst/==putlst.nrec and spzakaz.ckatzak/==katzak.nrec
and katzak.corg/==katorg.nrec and spzakaz.ckatusl/==katusl.nrec))
and katusl.name='За часы'
order by katorg.name;
В запросе R1 выбираются все путевые листы
Для каждого путевого листа существует запись в каталоге заказов (katzak) , которые ссылаются на путевой лист через поле Katzak.cputlst. На каждый заказ ссылаются спецификации заказов (таблица SpZakaz) где собственно и храниться сколько и чего было проделано по данному путевому листу (связь с Katzak через поле SpKatzak.Ckatzak).
В поле SPKATZAK. CKATUSL храниться ссылка на каталог услуг , SPKATZAK. SUMUSL сумма за услуги , SPKATZAK . KOL количество этих услуг.
Поле KATZAK. CORG ссылается на контрагента чей это заказ .
Запрос R1 выбирает путевые листы у которых в спецификации заказа стоит услуга «За часы» (данная услуга есть у каждого путевого листа , различается лишь количество и стоимость).
Запрос Т2 выбирает для того же путевого из спецификаций те строки , где в качестве услуги стоит «за перепробег». Для этого в блоке № 1 переменной Nkatzak присваивается значение номера записи в каталоге Katzak (заказа ссылающегося на данный путевой) и по нему выбирается , если есть , значения за перепробег.
.
ard
.var
nkatzak:comp;
.endvar
.create view t2 as select spzakaz.*,tarifn.*,tarifav.*
where ((spzakaz.ckatusl/==katusl.nrec))and t2.spzakaz.ckatzak=nkatzak
and katusl.name='за перепробег';
.create view R1 as SELECT putlst.npl,katusl.name,katzak.nrec,spzakaz.kol,spzakaz.sumusl,katorg.name
where((katzak.cputlst/==putlst.nrec and spzakaz.ckatzak/==katzak.nrec
and katzak.corg/==katorg.nrec and spzakaz.ckatusl/==katusl.nrec))
and katusl.name='За часы'
order by katorg.name;
.{table R1
.begin
nkatzak:=r1.katzak.nrec;
end.
.{table t2
.}
.fields
R1.putlst.npl
R1.katusl.name
R1.spzakaz.kol
R1.spzakaz.sumusl
T2.katusl.name
T2.spzakaz.kol
T2.spzakaz.sumusl
R1.katorg.name

.endfields
@@@@@@@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@ @@@@@@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.}
.endform
Данная конструкция работает без нареканий , достаточно быстро и без ошибок.
№ Пут.л. Услуга Кол Стоимость Услуга Кол Стоимость Контрагент
098758 За часы 16 2409 за перепробег 260 83 АППАРАТ УПРАВЛЕНИЯ ООО ОГП
098774 За часы 22 3404 ОГПЗ
098778 За часы 22 3312 ОГПЗ
098775 За часы 22 3312 ОГПЗ
098740 За часы 22 2925 ОГПЗ
098777 За часы 16 2476 за перепробег 320 334 ОГПЗ
098773 За часы 16 2409 за перепробег 240 0 ОГПЗ
098771 За часы 16 2409 ОГПЗ
098780 За часы 22 3191 за перепробег 350 78 ОГПЗ
098772 За часы 22 3404 ОГПЗ
098779 За часы 22 3404 ОГПЗ
098754 За часы 14 2089 за перепробег 320 426 ОГПУ
098746 За часы 14 2031 за перепробег 262 203 ОГПУ
098753 За часы 14 2089 за перепробег 325 445 ОГПУ
098748 За часы 14 2089 за перепробег 530 1238 ОГПУ
098747 За часы 14 2089 за перепробег 390 697 ОГПУ
098751 За часы 14 2089 ОГПУ
103450 За часы 14 2032 ОГПУ
098750 За часы 14 2014 за перепробег 246 168 ОГПУ
103470 За часы 22 3312 ОГПУ
098749 За часы 14 2089 за перепробег 300 348 ОГПУ
098757 За часы 14 2166 за перепробег 260 209 ОГПУ
098743 За часы 12 1807 ОГПУ
098752 За часы 14 2089 за перепробег 280 271 ОГПУ
098755 За часы 14 2089 за перепробег 262 201 ОГПУ
098756 За часы 14 2089 за перепробег 216 23 ОГПУ
098759 За часы 16 2476 ОГПЭ
098760 За часы 22 3312 ОГПЭ
103453 За часы 15 2321 ОГР
098767 За часы 15 2321 ОГР
098768 За часы 16 2476 ОРЕНБУРГСКИЙ ГЗ
098769 За часы 16 2476 за перепробег 306 275 ОРЕНБУРГСКИЙ ГЗ
098770 За часы 16 2476 ОРЕНБУРГСКИЙ ГЗ
098745 За часы 16 2321 УЖДТ
098764 За часы 16 2476 за перепробег 340 417 УЖДТ
098741 За часы 16 2476 за перепробег 270 125 УЖДТ
098761 За часы 16 2321 за перепробег 268 109 УЖДТ
098762 За часы 16 2409 за перепробег 260 83 УЖДТ
098766 За часы 16 2476 УЖДТ
104698 За ч%
Ответить