Страница 1 из 1
Вопрос про группировку
Добавлено: 25 янв 2008, 14:49
Atim
Нужно организовать группировку по 2 уровням Подразделения->МОЛ
и посчитать итоговые суммы Имеется след. временная таблица
table struct SFO_KMol
(
PodrN:string,
MolN:string,
NumTr:string,
FIO:string,
TabNum:string,
NameMC:string,
barMc:string,
PriceM:double,
Edz_mc:string,
Kolmc:double,
DateEk:string,
SrokSl:string,
Date_Vb:string
)
with index
(
SFO_KMOL01=PodrN+MolN,
);
Как правильно организовать циклы и посчитать итоговые суммы (по подразделениям и Мол) в Slk отчете?
Добавлено: 28 янв 2008, 08:29
k_vit
Слишком много строк пишете во временную таблицу, лучше писать ссылки на Мол и Подр.
Код: Выделить всё
table struct SFO_KMol
(
Podr :comp,
Mol :comp
.....
)
with index
(
SFO_KMOL01 = Podr+Mol
);
и написать напрмер ф-ию для группировки
Код: Выделить всё
.function InsMol(cPodr, cMol : comp; ...........) : boolean;
begin
if _VIEW_.GetFirst SFO_KMol where ((cPodr == SFO_KMol.Podr and
cMol == SFO_KMol.Mol)) <> tsOk then {
// Тут вставляете все поля в SFO_KMol
InsMol := _VIEW_.insert current SFO_KMol = tsOk;
} else {
//.. тут суммы сворачиваете
InsMol := _VIEW_.update current SFO_KMol = tsOk;
}
end.
Добавлено: 28 янв 2008, 09:51
Atim
В slk-отчете пишу следующий код, группировка отрабатывает
.Var
OldPodr:string;
OldMol:string;
.EndVar
.begin
OldMol:='';
OldPodr:='';
Oitog:=0;
end.
.{Table 'v_SfoKMol' by Sfo_Kmol.PodrN,Sfo_Kmol.MolN;
.{?Internal; (OldPodr<>v_SfoKmol.Sfo_kmol.PodrN)
.begin
OldPodr:=v_SfoKmol.Sfo_kmol.PodrN;
OldMol:=v_SfoKmol.Sfo_kmol.MolN;
Set vp_SfoKmol.v_podr:=v_SfoKmol.Sfo_kmol.PodrN;
vp_SfoKmol.GetFirst Sfo_Kmol;
end.
.Fields
v_SfoKmol.Sfo_kmol.PodrN
v_SfoKmol.Sfo_kmol.MolN
.EndFields
Подразделение: ^
МОЛ: ^
.}
.begin
Oitog:=Oitog+v_SfoKmol.Sfo_Kmol.Kolmc; // общая сумма по отчету
end.
.{?Internal; (OldMol<>v_SfoKmol.Sfo_kmol.MolN) // если 2 МОЛа на 1 подразделении
.begin
ItogKolM:=0;
OldMol:=v_SfoKmol.Sfo_kmol.MolN;
Set vm_SfoKmol.v_Mol:=v_SfoKmol.Sfo_kmol.MolN;
vm_SfoKmol.GetFirst Sfo_Kmol;
end.
.Fields
v_SfoKmol.Sfo_kmol.MolN
.EndFields
МОЛ: ^
.}
.begin
Cnt := Cnt + 1; // счетчик
end.
.Fields
Cnt
v_SfoKmol.Sfo_Kmol.NumTr
v_SfoKmol.Sfo_Kmol.Fio
v_SfoKmol.Sfo_Kmol.tabNum
v_SfoKmol.Sfo_Kmol.NameMc
v_SfoKmol.Sfo_Kmol.barMc
v_SfoKmol.Sfo_Kmol.PriceM
v_SfoKmol.Sfo_Kmol.Edz_mc
v_SfoKmol.Sfo_Kmol.Kolmc
v_SfoKmol.Sfo_Kmol.dateEk
v_SfoKmol.Sfo_Kmol.SrokSl
v_SfoKmol.Sfo_Kmol.Date_Vb
.endFields
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
.}
Как посчитать итоговые суммы по МОЛ. по подразделению ?
Добавлено: 30 янв 2008, 10:44
Atim
Спасибо всем Сгрупировал и посчитал Итоги по МОЛ и подразделениям