что-то типа:
Код: Выделить всё
...
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 писал(а):А закрывай
Хотя я все равно не понял, почему бы автору не избавиться от фильтров
Дело вкуса и времени, однако.