boundactive без "s"denisag писал(а):Что такое "boundsactive"? в документации по поиску не находит, Viper ругается что нет такой функции поля или метода.
Как использовать Bounds?
Модераторы: m0p3e, edward_K, Модераторы
Re: Как использовать Bounds?
Re: Как использовать Bounds?
так я понял:
нужно объявить переменные
_gruz:=tmpGruzto.CGRUZTO
_adr:=tmpGruzto.ADRES
но куда их притулить не совсем понимаю:
в cmDefault?
Код не весь мой - поэтому некоторые вещи доходят туговато
Написал вот так:
при компиляции ругается на эти строки
//if getfirst ????? =0 {} // без позиционирования иногда не срабатывает обновление
//rescanpanel(tn?????) // вместо tn можно юзать # - но это не везде.
закоментил их так как в первую очередь хочу разобраться в самом наложении фильтров, а причесать можно позже
На выходе опять получаю 0 в начале и конце!
нужно объявить переменные
_gruz:=tmpGruzto.CGRUZTO
_adr:=tmpGruzto.ADRES
но куда их притулить не совсем понимаю:
в cmDefault?
Код не весь мой - поэтому некоторые вещи доходят туговато
Написал вот так:
Код: Выделить всё
cmDefault:
{
_kol:=tmpVozvratMC.KOLFACT
_price:=tmpVozvratMC.CENA
_csporder:=tmpVozvratMC.SPORDERNREC
///////
_gruz:=tmpGruzto.CGRUZTO
_adr:=tmpGruzto.ADRES
}
cmpick:
{
_gruz:=0;
message (_gruz)
RUNINTERFACE (L_SOPRDOC::Example2, _corg, _gruz, _adr);
if boundactive(tbfilGruz) subbounds(tbfilGruz)
if _gruz <>0
{ addbounds(tbfilGruz);
}
//if getfirst ????? =0 {} // без позиционирования иногда не срабатывает обновление
//rescanpanel(tn?????) // вместо tn можно юзать # - но это не везде.
/*if _gruz !=0
{
subbounds(tbfilGruz);
addbounds(tbfilGruz);
message (_gruz)
}
else
subbounds(tbfilGruz)
PutCommand(cmRefreshBDdata) */
message (_gruz)
}
end;
end.
// Вызов второго интерфейса для использования его в качестве фильтров для первого интерфейса
Interface Example2 'Грузополучатели' , escClose, cyan, doAccept;
//Передаем ему параметры
parameters _CORG, _gruz, _adr
//Создаем представление для временной таблицы tmpGruzto
create view as select * from tmpGruzto;
// Выводим то что будет отображаться в нашем интерфейсе
browse GruztoBrowse;
Fields
tmpGruzto.CGRUZTO 'Наименование грузополучателя':[25], protect;
tmpGruzto.ADRES 'Адрес грузополучателя':[25], protect;
end;
handleevent
cmInit :
{
//Обрабатываем прямой SQL для второго интерфейса
sql select distinct KATORG.NAME
,KATORG.ADDR
,KATORG3.NAME
,KATORG.NREC
from KATORG
,KATSOPR
,KATORG KATORG3
where KATSOPR.CGRUZTO = KATORG.NREC and
KATSOPR.CORGBASE = KATORG3.NREC and
(katsopr.corgbase = :_corg )
into tmpGruzto
}
end;
end.
//if getfirst ????? =0 {} // без позиционирования иногда не срабатывает обновление
//rescanpanel(tn?????) // вместо tn можно юзать # - но это не везде.
закоментил их так как в первую очередь хочу разобраться в самом наложении фильтров, а причесать можно позже
На выходе опять получаю 0 в начале и конце!
Последний раз редактировалось denisag 01 фев 2012, 13:33, всего редактировалось 1 раз.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как использовать Bounds?
да. правильней в cmDefault - чтобы только по enter менялись.
Re: Как использовать Bounds?
и вылезло еще вот что:
если добавить переменные в parameters
То происходит "затроение" строк во втором интерфейсе
А так писать я понимаю нельзя:
Все разобрался - теперь накладывается.
Задвоений - тоже нет!!!
Спасибо всем за помощ - мой уровень кодинга на vipere получил следующий уровень
если добавить переменные в parameters
Код: Выделить всё
parameters _CORG, _gruz, _adr
А так писать я понимаю нельзя:
Код: Выделить всё
create view as select * from tmpGruzto group by tmpGruzto.CGRUZTO;
Код: Выделить всё
cmpick:
{
_gruz:='';
RUNINTERFACE (L_SOPRDOC::Example2, _corg, _gruz, _adr);
if boundactive(tbfilGruz) subbounds(tbfilGruz)
if _gruz <>''
{ addbounds(tbfilGruz);
}
if getfirst tmpVozvratMC =0 {} // без позиционирования иногда не срабатывает обновление
rescanpanel(tntmpVozvratMC) // вместо tn можно юзать # - но это не везде.
}
end;
end.
// Вызов второго интерфейса для использования его в качестве фильтров для первого интерфейса
Interface Example2 'Грузополучатели' , escClose, cyan, doAccept;
//Передаем ему параметры
parameters _CORG, _gruz, _adr
//Создаем представление для временной таблицы tmpGruzto
create view as select * from tmpGruzto;
// Выводим то что будет отображаться в нашем интерфейсе
browse GruztoBrowse;
Fields
tmpGruzto.CGRUZTO 'Наименование грузополучателя':[25], protect;
tmpGruzto.ADRES 'Адрес грузополучателя':[25], protect;
end;
handleevent
cmInit :
{
//Обрабатываем прямой SQL для второго интерфейса
sql select distinct KATORG.NAME
,KATORG.ADDR
,KATORG3.NAME
,KATORG.NREC
from KATORG
,KATSOPR
,KATORG KATORG3
where KATSOPR.CGRUZTO = KATORG.NREC and
KATSOPR.CORGBASE = KATORG3.NREC and
(katsopr.corgbase = :_corg )
into tmpGruzto
}
cmDefault:
{
_gruz:=tmpGruzto.CGRUZTO
_adr:=tmpGruzto.ADRES
}
end;
end.
Спасибо всем за помощ - мой уровень кодинга на vipere получил следующий уровень
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как использовать Bounds?
да. не обратил внимание. А у вас что параметры к фейсу где то вне фейсов объявлены? Обычно их объявляют после interface (если используются в запросе , то лучше после create view. И следите за типом - это процентов 70 ошибок - comp надежней чем string.
Re: Как использовать Bounds?
Переменные вы имеете ввиду? Да они объявляются в самом начале
если возникает необходимость то можно одну и туже переменную с легкостью использовать в нескольких интерфейсах, а с типами это верно подмечено
Код: Выделить всё
//Обозначаем переменные
var _corg, _cmc, _csporder, _cpodr:comp;
var _kol, _price:double;
var _dsopr :date;
var _gruz, _adr :string;
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как использовать Bounds?
объявлять глобально плохой стиль. можно нарваться на чего нибудь. Опять же память будут отъедать у всех.
А так можно было фейс вообще без параметров сделать - смысл их передавать.
А так можно было фейс вообще без параметров сделать - смысл их передавать.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Как использовать Bounds?
в интерфейсе есть две логические таблицы. поименованы. из маркера выбранные значения помещаю в Pick
к первой есть баундс с жесткой подцепкой к этому Pick (синоним)
как только делаю баундс ко второй (аналогичный к pick -синоним) - начинает происходить непонятное... он почему то активен без addbounds ... и отрабатывает вообще странно...
Может на нескольких ЛТ баундсы нельзя использовать?
к первой есть баундс с жесткой подцепкой к этому Pick (синоним)
как только делаю баундс ко второй (аналогичный к pick -синоним) - начинает происходить непонятное... он почему то активен без addbounds ... и отрабатывает вообще странно...
Может на нескольких ЛТ баундсы нельзя использовать?