Поле в прототипе совпадает с полем в таблице

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

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

Ответить
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Поле в прототипе совпадает с полем в таблице

Сообщение Nikos »

Добрый день!
Нужно поправить выходную форму книги покупок. Делаю нужные изменения и есть такая строка:
Result.Fil_7 := Round(SummA, 2),
При компиляции выдается ошибка:
Поле SUMMA есть как минимум у двух таблиц : SCHFACT и BOOKPRZK.
Но мне-то нужно взять значение из потока. Т.е. вопрос заключается с том, как быть, если поле в прототипе совпадает с полем корневой таблицы view?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

1. В create view не забудьте указать имя.
.create view vSch, ну и ко всем обращениям к вьюхе сие добавить.
2. никогда не используйте в списке полей * - не ленитесь прописывать поля (а можно и вообще одно оставить - остальные будут добалены по мере необходимости). Если имя поля в прототипе сопадет с полем таблы а его нужно использовать в филтре, то это нужно делать через доп.переменую.
3. а возможно и не эта строка влияет на предупреждение.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Вот вьюха:
.Create view vSpSchf
var g_cParty: comp;
from
BookPrZk,
SchFact ,
SpSchf ,
SpSopr ,
KatParty,
KatSopr
where
((
nBookPrZk == BookPrZk.nRec and
((BookPrZk.SubTip = 4) or
(BookPrZk.SubTip = 5) or
(BookPrZk.SubTip = 32)) and
BookPrZk.cSchFact == SchFact.nRec and
SchFact.nRec == SpSchf.cSchFact and
BookPrZk.cSopr == KatSopr.nRec and
KatSopr.nRec == SpSopr.cSopr and
g_cParty == KatParty.nRec
));
- уже присутствует в форме, имя есть, вообще убрал все обращения к любым полям таблиц (оставил только поля потока) - тот же результат - так как таблица есть во view, то ругается
2. Пробовал перечислять поля явно - не помогает. Имя поля в прототипе нужно использовать не в фильтре, а просто залить поток во временную таблицу, чтоб потом сгруппировать так как надо
3. Ошибка именно в этой строке, меняю ее на Result.Fil_7 := 0, - все нормально компилируется.
Что можно еще попробовать?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

.Create view vSpSchf
var g_cParty: comp;
as select Schfact.summa (fieldname=Schfact_summa)
from


"vSpSchf." добавить ко всем обращением к данным вьюхи, в том числе и к getfirst и тому подобное.
уберите все из формы оставет только вьюху и вашу строку - что будет?
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

Оставил только:
.LinkForm 'BOOKZK' Prototype is 'BKPRZKF'
.Group 'Закупки (сводная)'
.NameInList 'Книга покупок сводная (МНЦС)'
.Create view vSpSchf
var g_cParty: comp;
from
BookPrZk,
SchFact ,
SpSchf ,
SpSopr ,
KatParty,
KatSopr
where
((
nBookPrZk == BookPrZk.nRec and
((BookPrZk.SubTip = 4) or
(BookPrZk.SubTip = 5) or
(BookPrZk.SubTip = 32)) and
BookPrZk.cSchFact == SchFact.nRec and
SchFact.nRec == SpSchf.cSchFact and
BookPrZk.cSopr == KatSopr.nRec and
KatSopr.nRec == SpSopr.cSopr and
g_cParty == KatParty.nRec
));
.fields
.endfields
.{
.{CheckEnter BKPRZKVAL
.{CheckEnter BKPRZKMAIN
.{CheckEnter BOOKZK
.}
.begin
insert into Result set
Result.Fil_7 := Round(SummA, 2);
end.
.}
.}
.{CheckEnter BKPRZKALLVAL
.}
.}
Отчет сформирован.
.endform

Резутьтат тот же.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

var wsumma :double ;
wsumma:=Round(SummA, 2);
vSpSchf.nsert into Result set
Result.Fil_7 := Round(wSummA, 2);
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

edward_K, большое спасибо - так все работает.
Правда не понимаю почему ...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

на будующее приводите весь оператор а не строку из него.
Ответить