что-то типа:
Код: Выделить всё
...
and word(...)==Pick.wList
and Pick.cRec==GroupMC.nrec
...
Модераторы: m0p3e, edward_K, Модераторы
Код: Выделить всё
...
and word(...)==Pick.wList
and Pick.cRec==GroupMC.nrec
...
Ок, это понятно...DarkAngel27 писал(а):Нужен интерфейс по МЦ, в котором было бы только МЦ из 2-х группМЦ. Можно ограничится стандартным GetMC, но при наличии очень большого кол-ва МЦ - это слишком неудобно.
Работать на выгрузке быстрее, да и визуализацию проще подключить, одно но: Если интерфейс открыт, то cmInit больше не будет проходить!!!! А если МЦ постоянно добавляются, то тогда как быть? Они не попадут в интерфейс!!!
Код: Выделить всё
INTERFACE TestMCGroup 'Заполнение собственной таблицы' (,,sci1Esc) cyan;
Create View
Var
Yr,Ms : word;
As Select *
From
KatMC,GroupMC,MyTable
KatMc SynKatMC
Where
((
Yr==MyTable.myYear And
Ms==MyTable.myMonth And
MyTable.cMc == KatMc.NRec And
KatMC.cGroupMC == GroupMC.NRec And
word(2) == Pick.wList And
Pick.cRec == SynKatMc.cGroupMC
));
Procedure RebuildRecords;
Begin
If RunInterface ( GETSOMGM )<> cmCancel // вызов ст.инт. множ.выбора групп МЦ
{
StartNewVisual (...);
Delete All MyTable;
_Loop Pick
{
_Loop SynKatMC
{
NextVisual;
Insert Current MyTable Set MyTable.cMC:=SynKatmc.nrec,
MyTable.Yr:=...,
MyTable.Ms:=...;
};
};
StopVisual(...);
};
End;
Panel pnlMain;
Table MyTable;
Browse brwmain
KatMC.Name : [40], Protect;
GroupMC.Name : [40], Protect;
End;
End;
HANDLEEVENT
// инициализация
cmInit : {
RebuildRecords;
};
// реакция на Alt+B - типа Фильтр поменять
cmFilterSave : {
//можно задать дату
....
// перестраиваем свобственную таблицу
RebuildRecords;
};
END;
END.
Max_fin уже писал, но если все же через Pick делать, то:DarkAngel27 писал(а):Нужен интерфейс по МЦ, в котором было бы только МЦ из 2-х группМЦ. Можно ограничится стандартным GetMC, но при наличии очень большого кол-ва МЦ - это слишком неудобно.
Работать на выгрузке быстрее, да и визуализацию проще подключить, одно но: Если интерфейс открыт, то cmInit больше не будет проходить!!!! А если МЦ постоянно добавляются, то тогда как быть? Они не попадут в интерфейс!!!
Код: Выделить всё
select
var
wL: word;
...
from
katmc mc (KATMC03), GroupMC GMC, Pick pk, ...
where
((
wL==pk.wList
and pk.cRec==GMC.nrec //если действительно надо где-то выводить
and pk.cRec==mc.cGroupMC
and word(0)==mc.isarch (NoIndex)
and katmc.nrec == MY_TABLE.f1
and word(Year(cur_date)) == MY_TABLE.f2
and word(Month(cur_date)) == MY_TABLE.f3
));
Хотя в принципе проще пользовать фейс:cmInit:
{
wL:=12;
if GetFirst FastFirstRow GroupMC where ((comp(281474976710748) == GroupMC.nRec)) = tsOK insert in Pick set wList:=wL, cRec:=GroupMC.nrec;
if GetFirst FastFirstRow GroupMC where ((comp(281474976710688) == GroupMC.nRec)) = tsOK insert in Pick set wList:=wL, cRec:=GroupMC.nrec;
...
}
Код: Выделить всё
where
((
groupmc.nrec == katmc.cgroupmc
and word(0) == katmc.isarch (noIndex)
and katmc.nrec == MyTable.f1
and word(Year(cur_date)) == MyTable.f2
and word(Month(cur_date)) == MyTable.f3
))
and (groupmc.nrec = comp(281474976710748)
or groupmc.nrec = comp(281474976710688))
Дело вкуса, это понятно, но избавление от фильтров дает прирост скорости.Max_Fin писал(а):У каждого свой стиль программирования, у меня через таблицы в памяти, у тебя через временные, а у кого-то через фильтры.Vitaliy писал(а):А закрывай
Хотя я все равно не понял, почему бы автору не избавиться от фильтров
Дело вкуса и времени, однако.