Заполнение временной таблицы из нескольких view

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

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

Ответить
solkalin
Постоянный гость
Сообщения: 60
Зарегистрирован: 23 ноя 2011, 11:59

Заполнение временной таблицы из нескольких view

Сообщение solkalin »

В аналитической ведомости заполняю временную таблицу из нескольких view по Saldmoun и Oborot. Запуталась в префиксах, помогите, пожалуйста.

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

.create view vwSld as select * from saldmoun
where ((ch==scheto and sub==SUBOSSCH and strtodate(c0p2,'DD/MM/YYYY')<<=datesal and strtodate(c0p3,'DD/MM/YYYY')>>=datesal ))
;

.create view vwOD select * from oborot where ((
ch==scheto and sub==subossch and strtodate(c0p2,'DD/MM/YYYY')<<=datob and strtodate(c0p3,'DD/MM/YYYY')>>=datob));

.create view vwMain as select * from mtKau (i01);

.....

vwSld._loop saldmoun {
if getfirst fastfirstrow mtKau where ((saldmoun.KAUOS[1]==mtKAU.KAU))<>tsOk {

ClearBuffer(vwMain.tnmtKAU);
vwMain.mtKAU.Sch  := vwSld.saldmoun.scheto;  
vwMain.mtKAU.Sub  := vwSld.saldmoun.SUBOSSCH;  
vwMain.mtKAU.KAU  := vwSld.saldmoun.KAUOS[1];  
vwMain.mtKAU.Sum  := vwSld.saldmoun.sums;
 vwMain.insert current mtKAU;        
} // if saldmoun.KAUOS[1]==mtKAU.name
else {
vwMain.Update current mtKAU set
mtKAU.Sum  := mtKAU.Sum  + vwSld.saldmoun.sums;
} //else
} //loop saldmoun



vwOD._loop oborot {
if getfirst mtKau where ((oborot.KAUOS[1]==mtKau.KAU))<>tsOk {
ClearBuffer(vwMain.tnmtKau);
vwMain.mtKau.Sch  := vwOD.oborot.scheto;  
vwMain.mtKau.Sub  := vwOD.oborot.SUBOSSCH;  
vwMain.mtKau.KAU  := vwOD.oborot.KAUOS[1];  
vwMain.mtKau.SumD  := vwOD.oborot.sumob;
 vwMain.insert current mtKau;        
} // if oborot.KAUOS[1]==mtKau.name
else {
vwMain.Update current mtKau set
mtKau.SumD  := mtKau.SumD + vwOD.oborot.sumob;
} //else
} //loop oborot

По saldmoun временная таблица заполняется с Updat-ом, а вот по Oborot, не находит во временной таблице записей и вставляет все по insert.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Заполнение временной таблицы из нескольких view

Сообщение Den »

операторы навигации принадлежат все конкретной view
Т.е. правильно :
if vwMain.getfirst fastfirstrow mtKau

аналогично метод clearbuffer :

vwMain.ClearBuffer(vwMain.tnmtKAU);

ну и при во всех where и if, раз уж поименованные ЛОТ используете, то будьте любезные префиксы ЛОТ указывать при обращении к полям таблиц...
vwOD._loop oborot {
if vwMain.getfirst mtKau where ((vwOD.oborot.KAUOS[1]==mtKau.KAU))<>tsOk
solkalin
Постоянный гость
Сообщения: 60
Зарегистрирован: 23 ноя 2011, 11:59

Re: Заполнение временной таблицы из нескольких view

Сообщение solkalin »

Большое Вам спасибо!!! Все заработало и складывается как надо.
Ответить