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

суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 07:52
Alexx
Добрый день, всем!
Делаю ARD-отчет, в котором с помощью create view выгребаю из таблицы данные (например, матценности). В таблице есть матценности с одинаковыми названиями, поэтому в отчете хотелось бы видеть название этой МЦ и рядом кол-во. Подскажите, как это лучше реализовать?

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 10:30
Den
Поподробнее описать задачу нужно, а то не хочется гадать (почитайте сами)...

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 13:46
St.Anislav
Что-то типа
.create view a as select *....
....
order by katmc.name;
.{table 'a' by a.katmc.name
.begin
kolvo:=0;
mcname:=a.katmc.name;
end.
.{by a.spsopr.nrec
.begin
kolvo:=kolvo+a.spsopr.kolfact;
end.
.}
<здесь выводим mcname, kolvo>
.}
.endform

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 14:30
Den
> В таблице есть матценности с одинаковыми >названиями, поэтому в отчете хотелось бы >видеть название этой МЦ и рядом кол-во.

В katmc есть позиции с одинаковыми названиями ? то есть нужно суммировать все кол-во spsopr по этим двум одинаковым МЦ и показать одной строкой ?

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 14:36
Alexx
Описываю подробно.
Необходимо из картотеки основных средств выгребсти основные средства по какому либо подразделению. Это делается без проблем.
Далее, в картотеке существуют ОС, названия которых повторяются. Вот именно их необходимо в отчете отобразить как одну запись с указанием кол-ва этих ОС и их суммарной стоимости.

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 14:53
Den
.var
old_rec,cur_rec :comp
k_name :string
kol,sum :double
first :integer
vyvod :boolean
.endvar
.create view t1 as select from katmc order by katmc.name
.create view t2 as select from spsopr
where ((cur_rec==spsopr.cmcusl))
.begin
first:=1;
vyvod:=false;
end.
.{table t1
.begin
cur_rec:=katmc.nrec;
if old_rec<>cur_rec
{
old_rec:=cur_rec;
if first<>1
{
vyvod:=true;
}
first:=0;
}
end.
.{?internal; vyvod=true
.fields
k_name kol sum
.endfields
^ ^ ^
.begin
kol:=0;
sum:=0;
vyvod:=false;
end.
.}
.{table t2
.begin
k_name:=t1.name;
kol:=kol+t2.kol;
sum:=sum+(t2.kol*t2.price);
end.
.}
.}
.fields
k_name kol sum
.endfields
^ ^ ^
.endform

Что-то вроде этого.Хотя быстро писал могут быть неточности. ;)

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 14:56
Den
Блин, ошибся малость :
не так
if old_rec<>cur_rec
а вот так
if old_rec<>t1.name
{
old_rec:=t1.name
.....

Re: суммирование однотипных записей в отчете

Добавлено: 17 ноя 2003, 14:59
Den
А еще лучше вот так :
if old_rec<>locase(trim(t1.name))
...

Re: суммирование однотипных записей в отчете

Добавлено: 18 ноя 2003, 15:50
Alexx
Спасибо, разобрался.