Как организовать цикл?

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

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

Ответить
Pavel555
Новичок
Сообщения: 28
Зарегистрирован: 31 май 2005, 11:33

Как организовать цикл?

Сообщение Pavel555 »

Как организовать цикл в форме по записям,т.е. надо чтобы просуммировались суммы по одинаковым кау.

.Form '1'
.ard
.var
d1:Date
d2:Date
summ:double
.endvar
.Create view tb1 as
select spkau.name,oborot.sumob,summ
from spkau,oborot
where ((oborot.kauos[2]/==spkau.nrec
and spkau.CMain/==katkau.nrec
and 000000000000004Bh/==katkau.nrec
))
and oborot.TBLos[2]='109'
and oborot.Scheto='423'
and (oborot.datob>=Date(01,02,2005) and oborot.datob<=Date(28,02,2005))
;
.fields
spkau.name
oborot.sumob
.endfields
.{table tb1
.begin
^ ^
end.
.}
.endform
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Логическая таблица построена совершенно не правильно.
Наиболее лучший вариант пройтись по проводкам в заданном диапозоне и суммировать с группировкой по КАУ. К примеру будем суммировать используя таблицу Pick, можно и другую, где будет еще идекс сортировки по имени КАУ.

что - то вроде этого

Код: Выделить всё

.create view vOborot
from Oborot, Pick
where
((
  '423' == Oborot.SchetO and
  Date(01,02,2005) <<= Oborot.DatOb and 
  Date(28,02,2005) >>= Oborot.DatOb
));
.begin
vOborot.delete all Pick where ((Word(999) == Pick.wList));
vOborot._loop Oborot
{
  if vOborot.GetFirst Pick 
    where ((Word(999) == Pick.wList and
                Oborot.KauOS[2] == Pick.cRec)) <> tsOK
  { 
    vOborot.Pick.wList := Word(999);
    vOborot.Pick.cRec := vOborot.Oborot.KauOS[2]
    vOborot.Pick.PickKol := Double(0);
    vOborot.insert current Pick;
  }
  vOborot.Pick.PickKol := vOborot.Pick.PickKol + vOborot.Oborot.SumOb;
  vOborot.update current Pick;
}
end.
ну и потом соответственно вывод через таблицу Pick
Pavel555
Новичок
Сообщения: 28
Зарегистрирован: 31 май 2005, 11:33

Сообщение Pavel555 »

А как потом вывод через Pick делать,просто никогда не использовал Pick :oops:
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

Код: Выделить всё

.create view vPick
as select Pick.*
from Pick
where
((
  Word(999) == Pick.wList
));
.fields
  if (vPick.Pick.cRec <> Comp(0),
      if (GetAnyKau(Word(0), Word(109), vPick.Pick.cRec), 
          GivenAnName(1), ''),
     '')
  vPick.Pick.Kol
.endfields
.{table 'vPick.Pick'
@@@@@@@@@@ &&&&&&&&&&&.&&
.}
Pavel555
Новичок
Сообщения: 28
Зарегистрирован: 31 май 2005, 11:33

Сообщение Pavel555 »

А можно как то обойтись без Getkau?
Ответить