Группировка в отчете
Модераторы: m0p3e, edward_K, Модераторы
Группировка в отчете
Есть view
.Create View m //
As Select//
tab25.scheto,
tab25.subossch,
tab25.schetk,
tab25.subschk,
tab25.sumob,
tab25.sodprr,
spkau.code,
spkau.name
from tab25, spkau
where ((
spkau.nrec == tab25.ckau
))
order by spkau.code
;
Вывожу в отчет записи.
.{table 'm' by spkau.nrec;// цикл по кау
.{ by tab25.ckau;
.{?internal;(m.tab25.scheto='420' or m.tab25.scheto='423' or m.tab25.scheto='425' or m.tab25.scheto='426')// для 20 сч
.begin
sum20_1:=sum20_1+m.tab25.sumob;//
end.
.}
.{?internal;((m.tab25.scheto='468' and m.tab25.subossch='50') and (m.tab25.schetk='499' and m.tab25.subschk='02'))//
.begin
if pos('ИП',m.tab25.sodprr)=0 then sum20_2:=sum20_2+m.tab25.sumob;//
if pos('ИП',m.tab25.sodprr)>0 then sum20_3:=sum20_3+m.tab25.sumob;//
end.
.}
.}// table 'm.tab25'
.fields
dfor1 dfor2
m.code m.name
DoubleToStr(sum20_1, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_2, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_3, '\2p[|-]3666666666666666666.88')
.endfields
.{?internal;(m.code<>K3)
@@@@@@@@@@ ^ ^ ^
.}
.begin//
K3:=m.code;//
end.
.} // table m
.endform//
Выгружает только последнюю запись.
Необходимо чтобы записи группировались по spkau.code, суммы брались из tab25 .{ by tab25.ckau;
.Create View m //
As Select//
tab25.scheto,
tab25.subossch,
tab25.schetk,
tab25.subschk,
tab25.sumob,
tab25.sodprr,
spkau.code,
spkau.name
from tab25, spkau
where ((
spkau.nrec == tab25.ckau
))
order by spkau.code
;
Вывожу в отчет записи.
.{table 'm' by spkau.nrec;// цикл по кау
.{ by tab25.ckau;
.{?internal;(m.tab25.scheto='420' or m.tab25.scheto='423' or m.tab25.scheto='425' or m.tab25.scheto='426')// для 20 сч
.begin
sum20_1:=sum20_1+m.tab25.sumob;//
end.
.}
.{?internal;((m.tab25.scheto='468' and m.tab25.subossch='50') and (m.tab25.schetk='499' and m.tab25.subschk='02'))//
.begin
if pos('ИП',m.tab25.sodprr)=0 then sum20_2:=sum20_2+m.tab25.sumob;//
if pos('ИП',m.tab25.sodprr)>0 then sum20_3:=sum20_3+m.tab25.sumob;//
end.
.}
.}// table 'm.tab25'
.fields
dfor1 dfor2
m.code m.name
DoubleToStr(sum20_1, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_2, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_3, '\2p[|-]3666666666666666666.88')
.endfields
.{?internal;(m.code<>K3)
@@@@@@@@@@ ^ ^ ^
.}
.begin//
K3:=m.code;//
end.
.} // table m
.endform//
Выгружает только последнюю запись.
Необходимо чтобы записи группировались по spkau.code, суммы брались из tab25 .{ by tab25.ckau;
При выводе в отчет пропадает первая строка, суммы записываются на вторую строку табл. table 'm' by spkau.nrec. Подскажите в чем может быть причина?
.{table 'm' by spkau.nrec;// цикл по кау
.{ by tab25.ckau;
.{?internal;(m.tab25.scheto='420');// для 20 сч
.begin
sum20_1:=sum20_1+m.tab25.sumob;//
end.
.}
.{?internal;((m.tab25.scheto='468' and m.tab25.subossch='50') and (m.tab25.schetk='499' and m.tab25.subschk='02'));//
.begin
if pos('ИП',m.tab25.sodprr)=0 then sum20_2:=sum20_2+m.tab25.sumob;//
if pos('ИП',m.tab25.sodprr)>0 then sum20_3:=sum20_3+m.tab25.sumob;//
end.
.}
.}// table 'm.tab25'
.fields
dfor1 dfor2
m.code m.name
DoubleToStr(sum20_1, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_2, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_3, '\2p[|-]3666666666666666666.88')
.endfields
@@@@@@@@@@
.begin//
sum20_1:=0;
sum20_2:=0;
sum20_3:=0;
end.
.} // table m
.endform//
.{table 'm' by spkau.nrec;// цикл по кау
.{ by tab25.ckau;
.{?internal;(m.tab25.scheto='420');// для 20 сч
.begin
sum20_1:=sum20_1+m.tab25.sumob;//
end.
.}
.{?internal;((m.tab25.scheto='468' and m.tab25.subossch='50') and (m.tab25.schetk='499' and m.tab25.subschk='02'));//
.begin
if pos('ИП',m.tab25.sodprr)=0 then sum20_2:=sum20_2+m.tab25.sumob;//
if pos('ИП',m.tab25.sodprr)>0 then sum20_3:=sum20_3+m.tab25.sumob;//
end.
.}
.}// table 'm.tab25'
.fields
dfor1 dfor2
m.code m.name
DoubleToStr(sum20_1, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_2, '\2p[|-]3666666666666666666.88') DoubleToStr(sum20_3, '\2p[|-]3666666666666666666.88')
.endfields
@@@@@@@@@@
.begin//
sum20_1:=0;
sum20_2:=0;
sum20_3:=0;
end.
.} // table m
.endform//
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
1.для начала
.{ by tab25.ckau;
замените на
.{table 'm.tab25'
.{table 'm' by spkau.nrec;//
на
.{table 'm.spkau
2. В запросе у вас видимо не хватает фильтрп по spkau.kodgrkau
да и сортировкой нужно определится - неправильно задали
получили же сообщение о внешней выгрузке.
напишите
order by spkau.kodgrkau,spkau.code
3. когда отладите замените
spkau.nrec == tab25.ckau
на
spkau.nrec /== tab25.ckau
я вообще склоняюсь что ваше order by виновато. Ну а group by мне никогда не нравилось надежностью(особливо на внешней выгрузке), мож сщас лучше - давно уже не пользовался.
.{ by tab25.ckau;
замените на
.{table 'm.tab25'
.{table 'm' by spkau.nrec;//
на
.{table 'm.spkau
2. В запросе у вас видимо не хватает фильтрп по spkau.kodgrkau
да и сортировкой нужно определится - неправильно задали
получили же сообщение о внешней выгрузке.
напишите
order by spkau.kodgrkau,spkau.code
3. когда отладите замените
spkau.nrec == tab25.ckau
на
spkau.nrec /== tab25.ckau
я вообще склоняюсь что ваше order by виновато. Ну а group by мне никогда не нравилось надежностью(особливо на внешней выгрузке), мож сщас лучше - давно уже не пользовался.