Страница 1 из 1

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

Добавлено: 08 сен 2012, 20:55
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.

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

Добавлено: 09 сен 2012, 13:50
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

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

Добавлено: 09 сен 2012, 18:04
solkalin
Большое Вам спасибо!!! Все заработало и складывается как надо.