Уважаемые коллеги!
Все мы знаем, как в формах в цикле выводится некий поток данных. В конце цикла можно получить итог, суммируя строки.
У меня вопрос: возможно ли получить итог до конца цикла? Например, чтобы в каждой строке вывести коэффициент?
Не знаю, как назвать тему :)
Модераторы: m0p3e, edward_K, Модераторы
Не знаю, как назвать тему :)
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Не знаю, как назвать тему :)
я так понимаю что нужно увидеть итог перед началом цикла?
прямо нет, если это не предусмотренно самой формой.я обычно в этих случаях накапливаю цикл во временюю таблицу, а после цикла вывожу шапку(с подсчитанным итогом) и делаю цикл по времянке.
прямо нет, если это не предусмотренно самой формой.я обычно в этих случаях накапливаю цикл во временюю таблицу, а после цикла вывожу шапку(с подсчитанным итогом) и делаю цикл по времянке.
Re: Не знаю, как назвать тему :)
Edward_K, можно простенький пример - для ориентира?
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Не знаю, как назвать тему :)
маленьких нет и не будет.
порядок примерно такой
в include файле ( пусть v.inc)
объявляешь следующую структуру
table struct tmp_db
( sort : string[100],
field1 :string ,
....
)
with index
( tmp_db01 = sort ,
tmp_db02 = field1
) ;
сей файл обязательно добавляешь в проект
#include v.inc
#make "*.frm"
в форме объявляешь ( возможны вариации)
.create view vvv
var wsu:double ;
as select tmp_db.* from tmp_db(tmp_db01) ;
перед циклом
.begin
wsu:=0 ;
vvv.delete all tmp_db ;
end.
в цикле делаешь програмный блок
.begin
wsu :=wsu+summa ;
vvv.tmp_db.sort := filedsort ;
vvv.tmp_db.field1 := .... ;
vvv.insert current tmp_db ;
end.
после цикла выводишь шапку до цикла + wsu
далее поля из tmp_db
.fields
vvv.tmp_db.field1
...
.endfields
.{ table 'vvv.tmp_db'
@@@@ @@@@@@@@@
.}
все в принципе просто если понимать чего ты хочешь и здесь на этом форуме уже вроде обсуждалось.
порядок примерно такой
в include файле ( пусть v.inc)
объявляешь следующую структуру
table struct tmp_db
( sort : string[100],
field1 :string ,
....
)
with index
( tmp_db01 = sort ,
tmp_db02 = field1
) ;
сей файл обязательно добавляешь в проект
#include v.inc
#make "*.frm"
в форме объявляешь ( возможны вариации)
.create view vvv
var wsu:double ;
as select tmp_db.* from tmp_db(tmp_db01) ;
перед циклом
.begin
wsu:=0 ;
vvv.delete all tmp_db ;
end.
в цикле делаешь програмный блок
.begin
wsu :=wsu+summa ;
vvv.tmp_db.sort := filedsort ;
vvv.tmp_db.field1 := .... ;
vvv.insert current tmp_db ;
end.
после цикла выводишь шапку до цикла + wsu
далее поля из tmp_db
.fields
vvv.tmp_db.field1
...
.endfields
.{ table 'vvv.tmp_db'
@@@@ @@@@@@@@@
.}
все в принципе просто если понимать чего ты хочешь и здесь на этом форуме уже вроде обсуждалось.
-
- Посетитель
- Сообщения: 39
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Стерлитамак
- Контактная информация:
Re: Не знаю, как назвать тему :)
Можно и так:
1. В цикле загоняешь данные в массивы
2. после цикла обрабатываешь массив
3. добавляешь новый цикл (в нем выводишь результаты).
1. В цикле загоняешь данные в массивы
2. после цикла обрабатываешь массив
3. добавляешь новый цикл (в нем выводишь результаты).
Re: Не знаю, как назвать тему :)
Edward_K, благодарю
С примером куда как проще разобраться - всё получилось.
С примером куда как проще разобраться - всё получилось.
Галактика 8.10, Oracle 10g / 10.2.0.4