Азы: Группирование при выводе ?

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

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

Ответить
s_oleg
Сообщения: 13
Зарегистрирован: 28 фев 2006, 12:21

Азы: Группирование при выводе ?

Сообщение s_oleg »

Делаю ARD, пока FRM потом хочу перевести в SLK.
После селекта получаю:

name1 sum1 sum2 sum3
name1 sum1 sum2 sum3
name1 sum1 sum2 sum3
name2 sum1 sum2 sum3
name2 sum1 sum2 sum3
name3 sum1 sum2 sum3
............
хочу вывести:

name 1
sum1 sum2 sum3
sum1 sum2 sum3
sum1 sum2 sum3
itog1 itog2 itog3
name2
sum1 sum2 sum3
sum1 sum2 sum3
itog1 itog2 itog3
..............

Как это сделать?
Прошу не пинать, только начинаю писать.
С уважением Олег
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

например через конструкцию {?;internal

А вообще лучше бы весь текст ard привели бы здесь...
homak
Постоянный обитатель
Сообщения: 144
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярский Край
Контактная информация:

Сообщение homak »

Или "набить" все данные в таблицу в памяти ... на форуме были примеры ....
s_oleg
Сообщения: 13
Зарегистрирован: 28 фев 2006, 12:21

Текст ARD

Сообщение s_oleg »

Вот текст отчета на текущем этапе:

.Form TEST_7
.NameInList 'Тест 7'
.Group 'Отчеты тестовые'
.ard
.var
code_kau:comp
.endvar
.create view t1 as
select oborot.scheto,oborot.subossch,
oborot.schetk,oborot.subschk,oborot.kauks[1],oborot.kauks[2],oborot.kauks[3],
katorg.name,
basedoc.nodoc,basedoc.name, basedoc.summa, basedoc.nds, basedoc.total,
katparty.name,
oborot.datob,oborot.sumob from oborot,katorg,katparty,basedoc where
(('308'==oborot.scheto and '03'==oborot.subossch and
oborot.kauks[1]/==katorg.nrec and oborot.kauks[2]/==basedoc.nrec and oborot.kauks[3]/==katparty.nrec ))
order by oborot.kauks[3],oborot.datob;
.fields
katparty.name
basedoc.nodoc
oborot.datob
katorg.name
basedoc.total
basedoc.summa
basedoc.nds
.endfields
.{table 't1'
.{?internal;(t1.basedoc.summa<>0)
@@@@@@@@@@@@@@@@@@@@@@@ № &&&& от @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ &#&&&&&.&& &#&&&&&.&& &#&&&&&.&&
.}
.}
.endform


Надо чтобы katparty.name было заголовком групп и в конце группы
итоги по ней.
С уважением Олег
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Может быть несколько коряво, но должно работать. Суть ясна, сам доделаешь мелочи... :smile:


.Form TEST_7
.NameInList 'Тест 7'
.Group 'Отчеты тестовые'
.ard
.var
code_kau:comp
first :integer
oldparty :string
vyvod : boolean
totsum : double
.endvar
.create view t1 as
select oborot.scheto,oborot.subossch,
oborot.schetk,oborot.subschk,oborot.kauks[1],oborot.kauks[2],oborot.kauks[3],
katorg.name,
basedoc.nodoc,basedoc.name, basedoc.summa, basedoc.nds, basedoc.total,
katparty.name,
oborot.datob,oborot.sumob from oborot,katorg,katparty,basedoc where
(('308'==oborot.scheto and '03'==oborot.subossch and
oborot.kauks[1]/==katorg.nrec and oborot.kauks[2]/==basedoc.nrec and oborot.kauks[3]/==katparty.nrec ))
order by oborot.kauks[3],oborot.datob;
.begin
first:=1;
end.
.{table 't1'
.begin
if oldparty<>t1.katparty.name
{
oldparty:=t1.katparty.name;
vyvod:=true;
}
else vyvod:=false;
end.
.{?internal; vyvod=true
.{?internal; vyvod=true and first<>1
.fields
totsum
.endfields
Итого по партии &&&&&&&&&&&&&&.&&
.begin
totsum:=0;
end.
.}
.fields
oldparty
.endfields
^
.begin
first:=0;
end.
.}
.{?internal;(t1.basedoc.summa<>0)
.begin
totsum:=totsum+t1.basedoc.summa;
end.
.fields
katparty.name
basedoc.nodoc
oborot.datob
katorg.name
basedoc.total
basedoc.summa
basedoc.nds
.endfields
@@@@@@@@@@@@@@@@@@@@@@@ № &&&& от @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ &#&&&&&.&& &#&&&&&.&& &#&&&&&.&&
.}
.}
.fields
totsum
.endfields
Итого по партии &&&&&&&&&&&&&&.&&
.endform
Ответить