Работа с View в интерфейсах
Добавлено: 30 июн 2004, 16:48
Помогите, пожалуйста новичку! Задача примерно такая. Имееются поля ввода, есть сложный View (вообще он д.б. не один и все с одними и теми же таблицами) с несколькими подцепленными таблицами, результат выборки зависит от значений полей (это даты и nrec-и). Надо сделать так, чтобы после ввода значений и нажатия кнопки, обновлялся View и отображался в интерфейсе. У меня не получается, либо грузится очень долго и выборка идет при инициализации, либо вообще нет обновления броузера.
Вот примерный текст. Чего я тут не пытался сделать, все результата не дало.
Interface myfirst 'Пересчет средних цен расхода' DoAccept,EscClose,cyan;
show at (2,2,150,50);
var periods : date;
var periodpo: date;
var nrecm: comp;
Create View As Select *
From Katmc, katpodr
WHERE katpodr.sklad=1;
Panel P1;
screen vibper
show at(1,1,94,5);
table katmc;
Fields
PeriodS:[10], noprotect;
PeriodPo:[10], noprotect;
katmc.barkod:[20], protect;
katmc.name:[20], skip, protect;
<<
&За периoд с .@@@@@@@@@@ &по .@@@@@@@@@@ &Номен. номер МЦ .@@@@@@@@@@@@
&Наименование МЦ .@@@@@@@@@@@@@@@@@@@@@
>>
end;//screen
screen vibskl
show at(95,1,,5);
table katpodr;
Fields
katpodr.kod:[7], protect;
katpodr.name:[20], protect;
<<
&Код склада .@@@@@@@
&Наименование .@@@@@@@@@@@@@@@@@@@@@
>>
end;//screen
handleEvent
cmDefault:
{ ReDrawPanel(CurTable);
};
end;
end;//panel p1
Panel p2;
screen vibgr
show at(1,45,,47);
BUTTONS
cmgIn; cmgOut; cmgOst; cmgRas; cmgUp; cmgRes;
<<
<.Приход.> <.Расход.> <.Остаток.> <.Расчет.> <.Изменить.> <.Сброс.>
>>
end;//screen
handleevent
cmgIn:
{RedrawPanel(CurTable);
}
cmgOut:
{Message(String(katmc.barkod));
}
cmgOst:
{
}
cmInit:
{RereadRecord;
}
cmgRas:
{
}
cmgUp:
{
}
cmgRes:
{
}
end; // HandleEvent
end;// panel
panel P3;
/* Пробовал этот View и в основной помещать, ничего
Create view prih
As select sklorder.norder,
sklorder.vidorder,
sklorder.dord,
sporder.kol,
sporder.srprice,
katmc.barkod,
katmc.name,
katsopr.nsopr,
katsopr.dopr,
katpodr.name,
katpodr.kod
From sklorder,sporder,katsopr
WHERE (( root==sklorder.nrec and (sklorder.vidorder=0)and
sklorder.csopr==katsopr.nrec AND
sklorder.nrec == sporder.csklorder and
sporder.cmc == katmc.nrec
)) and ((periods<=katsopr.dopr)and(periodpo>=katsopr.dopr));
Browse BPrih show at(1,6,50,44);
Fields
sklorder.norder;
sklorder.dord;
sporder.kol;
sporder.srprice;
end;
HandleEvent
cmDefault:
{redrawpanel(curtable)};
cmInit:
{RereadRecord;}
end;
end;
end. // interface
Вот примерный текст. Чего я тут не пытался сделать, все результата не дало.
Interface myfirst 'Пересчет средних цен расхода' DoAccept,EscClose,cyan;
show at (2,2,150,50);
var periods : date;
var periodpo: date;
var nrecm: comp;
Create View As Select *
From Katmc, katpodr
WHERE katpodr.sklad=1;
Panel P1;
screen vibper
show at(1,1,94,5);
table katmc;
Fields
PeriodS:[10], noprotect;
PeriodPo:[10], noprotect;
katmc.barkod:[20], protect;
katmc.name:[20], skip, protect;
<<
&За периoд с .@@@@@@@@@@ &по .@@@@@@@@@@ &Номен. номер МЦ .@@@@@@@@@@@@
&Наименование МЦ .@@@@@@@@@@@@@@@@@@@@@
>>
end;//screen
screen vibskl
show at(95,1,,5);
table katpodr;
Fields
katpodr.kod:[7], protect;
katpodr.name:[20], protect;
<<
&Код склада .@@@@@@@
&Наименование .@@@@@@@@@@@@@@@@@@@@@
>>
end;//screen
handleEvent
cmDefault:
{ ReDrawPanel(CurTable);
};
end;
end;//panel p1
Panel p2;
screen vibgr
show at(1,45,,47);
BUTTONS
cmgIn; cmgOut; cmgOst; cmgRas; cmgUp; cmgRes;
<<
<.Приход.> <.Расход.> <.Остаток.> <.Расчет.> <.Изменить.> <.Сброс.>
>>
end;//screen
handleevent
cmgIn:
{RedrawPanel(CurTable);
}
cmgOut:
{Message(String(katmc.barkod));
}
cmgOst:
{
}
cmInit:
{RereadRecord;
}
cmgRas:
{
}
cmgUp:
{
}
cmgRes:
{
}
end; // HandleEvent
end;// panel
panel P3;
/* Пробовал этот View и в основной помещать, ничего
Create view prih
As select sklorder.norder,
sklorder.vidorder,
sklorder.dord,
sporder.kol,
sporder.srprice,
katmc.barkod,
katmc.name,
katsopr.nsopr,
katsopr.dopr,
katpodr.name,
katpodr.kod
From sklorder,sporder,katsopr
WHERE (( root==sklorder.nrec and (sklorder.vidorder=0)and
sklorder.csopr==katsopr.nrec AND
sklorder.nrec == sporder.csklorder and
sporder.cmc == katmc.nrec
)) and ((periods<=katsopr.dopr)and(periodpo>=katsopr.dopr));
Browse BPrih show at(1,6,50,44);
Fields
sklorder.norder;
sklorder.dord;
sporder.kol;
sporder.srprice;
end;
HandleEvent
cmDefault:
{redrawpanel(curtable)};
cmInit:
{RereadRecord;}
end;
end;
end. // interface