Использование фильтра с множественным выбором
Модераторы: m0p3e, edward_K, Модераторы
Использование фильтра с множественным выбором
Добрый день.
У меня задача - разработать интерфейс с текущем наличием спецодежды (хотя это в принципе не важно). Проблема заключается в том, что должна быть возможность устанавливать фильтры с множественным выбором, например по подразделениям и по МОЛам. Получить эти фильтры проблемы нет (я использую 'L_MOL::GETSOMEMOL' и 'Z_KATPODR::GETSOMEPODR'), а вот как наложить эти ограничения на логическую таблицу не знаю. Делаю следующие ограничения:
bounds byMOL as
mbpin.cmol /== katmol.nrec and
Pick.crec == katmol.nrec and
8 == Pick.wlist
bounds bySklad as
mbpin.cpodr /== katpodr.nrec and
Pick.crec == katpodr.nrec and
11 == Pick.wlist
Но как-то криво (да и не работает )
Подскажите принцип, кто знает.
У меня задача - разработать интерфейс с текущем наличием спецодежды (хотя это в принципе не важно). Проблема заключается в том, что должна быть возможность устанавливать фильтры с множественным выбором, например по подразделениям и по МОЛам. Получить эти фильтры проблемы нет (я использую 'L_MOL::GETSOMEMOL' и 'Z_KATPODR::GETSOMEPODR'), а вот как наложить эти ограничения на логическую таблицу не знаю. Делаю следующие ограничения:
bounds byMOL as
mbpin.cmol /== katmol.nrec and
Pick.crec == katmol.nrec and
8 == Pick.wlist
bounds bySklad as
mbpin.cpodr /== katpodr.nrec and
Pick.crec == katpodr.nrec and
11 == Pick.wlist
Но как-то криво (да и не работает )
Подскажите принцип, кто знает.
Разбил на несколько баундсов. Что-то так у меня вообще не фильтрует. Приведу основной код, может, в другом месте неправильно делаю:
as select *
from mbpin, katmbp, katpodr, katmol, grpodr
where
((
1 == mbpin.status
and mbpin.cmbp == katmbp.nrec
and mbpin.cpodr == katpodr.nrec
and mbpin.cmol == katmol.nrec
and katpodr.cgrpodr == grpodr.nrec
))
bounds byMOL1 as
mbpin.cmol /== katmol.nrec
bounds byMOL2 as
Pick.crec == katmol.nrec and
8 == Pick.wlist
bounds bySklad1 as
mbpin.cpodr /== katpodr.nrec
bounds bySklad2 as
Pick.crec == katpodr.nrec and
11 == Pick.wlist
order by mbpin.status, mbpin.cpodr, mbpin.cmol;
далее накладываю ограничения:
#MOL:
{
RunInterface('L_MOL::GETSOMEMOL');
if tsOk = GetFirst Pick where ((8 == pick.wlist))
{
PushBounds(tbbyMOL1);
PushBounds(tbbyMOL2);
}
else
{
PopBounds(tbbyMOL1);
PopBounds(tbbyMOL2);
}
RescanPanel(#mbpin);
}
#Sklad:
{
RunInterface('Z_KATPODR::GETSOMEPODR');
if tsOk = GetFirst Pick where ((11 == pick.wlist))
{
PushBounds(tbbySklad1);
PushBounds(tbbySklad2);
}
else
{
PopBounds(tbbySklad1);
PopBounds(tbbySklad2);
}
RescanPanel(#mbpin);
}
as select *
from mbpin, katmbp, katpodr, katmol, grpodr
where
((
1 == mbpin.status
and mbpin.cmbp == katmbp.nrec
and mbpin.cpodr == katpodr.nrec
and mbpin.cmol == katmol.nrec
and katpodr.cgrpodr == grpodr.nrec
))
bounds byMOL1 as
mbpin.cmol /== katmol.nrec
bounds byMOL2 as
Pick.crec == katmol.nrec and
8 == Pick.wlist
bounds bySklad1 as
mbpin.cpodr /== katpodr.nrec
bounds bySklad2 as
Pick.crec == katpodr.nrec and
11 == Pick.wlist
order by mbpin.status, mbpin.cpodr, mbpin.cmol;
далее накладываю ограничения:
#MOL:
{
RunInterface('L_MOL::GETSOMEMOL');
if tsOk = GetFirst Pick where ((8 == pick.wlist))
{
PushBounds(tbbyMOL1);
PushBounds(tbbyMOL2);
}
else
{
PopBounds(tbbyMOL1);
PopBounds(tbbyMOL2);
}
RescanPanel(#mbpin);
}
#Sklad:
{
RunInterface('Z_KATPODR::GETSOMEPODR');
if tsOk = GetFirst Pick where ((11 == pick.wlist))
{
PushBounds(tbbySklad1);
PushBounds(tbbySklad2);
}
else
{
PopBounds(tbbySklad1);
PopBounds(tbbySklad2);
}
RescanPanel(#mbpin);
}
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
where
((
1 == mbpin.status
and mbpin.cmbp == katmbp.nrec
))
bounds mol
and mbpin.cmol == katmol.nrec
bounds mol1
and mbpin.cmol/== katmol.nrec
bounds byMOL1 as
katmol.nrec/==Pick.crec
8 == Pick.wlist
bounds pod
mbpin.cpodr == katpodr.nrec
bounds pod1
mbpin.cpodr /== katpodr.nrec
bounds bySklad1 as
katpodr.nrec /== Pick.crec and
11 == Pick.wlist
!and katpodr.cgrpodr == grpodr.nrec (пока без этого условия проверим)
CmInit :{
addbounds(tbmol);
addbounds(tbpod);
}
CmPick :{
#MOL:
{
if RunInterface('L_MOL::GETSOMEMOL')<>cmcancel
{
subbounds(tbmol);
addbounds(tbmol1);
addbounds(tbbymol);
}
}
#podr:
{
if RunInterface('Z_KATPODR::GETSOMEPODR')<>CmCancel
{
subbounds(tbpod);
addbounds(tbpod1);
addbounds(tbbysklad1);
}
}
}
Примерно так...
((
1 == mbpin.status
and mbpin.cmbp == katmbp.nrec
))
bounds mol
and mbpin.cmol == katmol.nrec
bounds mol1
and mbpin.cmol/== katmol.nrec
bounds byMOL1 as
katmol.nrec/==Pick.crec
8 == Pick.wlist
bounds pod
mbpin.cpodr == katpodr.nrec
bounds pod1
mbpin.cpodr /== katpodr.nrec
bounds bySklad1 as
katpodr.nrec /== Pick.crec and
11 == Pick.wlist
!and katpodr.cgrpodr == grpodr.nrec (пока без этого условия проверим)
CmInit :{
addbounds(tbmol);
addbounds(tbpod);
}
CmPick :{
#MOL:
{
if RunInterface('L_MOL::GETSOMEMOL')<>cmcancel
{
subbounds(tbmol);
addbounds(tbmol1);
addbounds(tbbymol);
}
}
#podr:
{
if RunInterface('Z_KATPODR::GETSOMEPODR')<>CmCancel
{
subbounds(tbpod);
addbounds(tbpod1);
addbounds(tbbysklad1);
}
}
}
Примерно так...