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 раз.
									
			
						
										
						- 
				edward_K
- Заслуженный деятель интернет-сообщества
- Сообщения: 5189
- Зарегистрирован: 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 получил следующий уровень

- 
				edward_K
- Заслуженный деятель интернет-сообщества
- Сообщения: 5189
- Зарегистрирован: 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;                
- 
				edward_K
- Заслуженный деятель интернет-сообщества
- Сообщения: 5189
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Как использовать Bounds?
объявлять глобально плохой стиль. можно нарваться на чего нибудь. Опять же память будут отъедать у всех.
А так можно было фейс вообще без параметров сделать - смысл их передавать.
			
			
									
						
										
						А так можно было фейс вообще без параметров сделать - смысл их передавать.
- 
				Алексей
- Местный житель
- Сообщения: 2898
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Как использовать Bounds?
в интерфейсе есть две логические таблицы.  поименованы.  из маркера выбранные значения помещаю в Pick
к первой есть баундс с жесткой подцепкой к этому Pick (синоним)
как только делаю баундс ко второй (аналогичный к pick -синоним) - начинает происходить непонятное... он почему то активен без addbounds ... и отрабатывает вообще странно...
Может на нескольких ЛТ баундсы нельзя использовать?
			
			
									
						
										
						к первой есть баундс с жесткой подцепкой к этому Pick (синоним)
как только делаю баундс ко второй (аналогичный к pick -синоним) - начинает происходить непонятное... он почему то активен без addbounds ... и отрабатывает вообще странно...
Может на нескольких ЛТ баундсы нельзя использовать?