Страница 1 из 1

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

Добавлено: 20 апр 2006, 11:13
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
..............

Как это сделать?
Прошу не пинать, только начинаю писать.
С уважением Олег

Добавлено: 20 апр 2006, 12:14
Den
например через конструкцию {?;internal

А вообще лучше бы весь текст ard привели бы здесь...

Добавлено: 20 апр 2006, 14:10
homak
Или "набить" все данные в таблицу в памяти ... на форуме были примеры ....

Текст ARD

Добавлено: 21 апр 2006, 11:18
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 было заголовком групп и в конце группы
итоги по ней.
С уважением Олег

Добавлено: 21 апр 2006, 11:58
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