FCOM

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

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

Ответить
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

FCOM

Сообщение Alexander »

Опишу вопрос в общем виде: Пусть vip передает поток данных в форму:
.Fields
SomeField1
SomeField2
.EndFields


Пример Потока, отсортированного по SomeField1:
a 1
b 2
c 2
....

Необходимо, сделать группировку по SomeField1, те:
Поток:
a 1
b 2
b 3
b 1
c 2

Требуемый Результат:
a 1
b 2
b 3
b 1
Итог по b: 6
c 2

Итог должен писатьтся только тогда, когда есть повторяющиеся записи SomeField1.
Или такой:
a 1
b 6
c 2
aleks1232321
Постоянный гость
Сообщения: 86
Зарегистрирован: 28 апр 2005, 12:15
Откуда: Москва

Сообщение aleks1232321 »

Что-нибудь типа (общая идея):
.var
mm : string
sum : integer
.endvar

.begin
mm := ''
sum := 0
end.
.
.
.
.


.begin
mm := SomeField1
sum := sum + SomeField2
end.


.{?internal; (SomeField1<> mm and mm <> '');
.Fields
mm //SomeField1
sum //SomeField2
.EndFields
^ ^
.begin
mm := SomeField1
sum := SomeField2
end.
.}

и где-то в конце, когда поток кончается - вывести остаток

.Fields
mm //SomeField1
sum //SomeField2
.EndFields
^ ^
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

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

.Form 'TEST_FRM'
.NameInList 'test_form'
.var
prev:string;
s:double;
.endvar
.fields
s
.endfields
.begin
s:=1;
end.
  s=^
.EndForm
Компилятор ругается: попытка описать поле с именем, уже использованным для описания переменной!
В чем ошибка???
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

.ard
добавте
а заодно уж и
.table blank
aleks1232321
Постоянный гость
Сообщения: 86
Зарегистрирован: 28 апр 2005, 12:15
Откуда: Москва

Сообщение aleks1232321 »

Точного ответа дать не могу, но если после .endvar вставить пустую view, то все компиляется.
Например
.Form 'TEST_FRM'
.NameInList 'test_form'
.var
prev:string;
s:double;
.endvar

.create view a1;

.begin
s:=1;
end.
.fields
s
.endfields
s = ^
.EndForm
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

доку почитайте ( vipprog.chm) и поймите разницу между автономными формами и прототипом. В прототипе нельзя переменную из var использовать в fields - это доступно только в присоединенке на него.
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

edward_K

понятно! Спасибо!
Ответить