Сортировка по выбранному полю брауза

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сортировка по выбранному полю брауза

Сообщение BlazeBio »

Порылся на форуме и ничего путного по сортировке, кроме такого способа не нашёл по сортировке в браузе:

Код: Выделить всё

vipInterface PickPPKatstan;
interface PickPPKatstan 'Список эталонных МЦ' alwaysReturn, doAccept;
 show at (,,93,25);
 var kstan, kgroupnrec,ketalonnrec:comp;
 	 check,sorted,grants:boolean;
	 res:word;
 create view
 as select k1.name,ppkatstan.name,k2.name,*
 from katmc k1(katmc02),PPKATSTANMC,PPKATSTAN,katmc k2,groupmc(GROUPMC03),ppstatus,ppgrformat,ppline,katmc k3(katmc02),katmc k4(katmc02),katpodr
 where ((ppkatstan.cmc==k1.nrec
 and (7=k1.isarch)
 and	ppkatstan.atl_nrec==ppkatstanmc.cppkatstan
 and k2.nrec==ppkatstanmc.cmc
 and ppkatstan.cgroupmc==groupmc.nrec and (0=k2.isarch or 5=k2.isarch)))
order byppkatmc by ppkatstan.name
order byk1 by k1.name
order bygr by groupmc.name; 
 parameters kstan,check;
 panel pMc
 show at (,,,);
 browse bMc(,,Sci1478Esc);
	table ppkatstan,cartesian;
	 fields
	 		ppkatstan.name 'МЦ(Э,Л)':[10],protect;
	 		k1.name 'Эталон':[10],protect;
	 		groupmc.name'Группа Мц':[15],protect;

 end;

 end;
 tableevent table ppkatstan
		 cmSetDefault: {		  
						ppkatstan.name:='';
						ppkatstan.cmc:=0;
						ppkatstan.cgroupmc:=0;
						SetModified(true);
						PutCommand(cmEdit);
						}
		cmUpdateRecord : update current ppkatstan;
		cmInsertRecord :
						{
						insert current ppkatstan;//rereadrecord(#ppkatstan);}
						}
		cmDeleteRecord:
						{
						if Delete ppkatstanmc Where (( ppkatstan.atl_nrec==ppkatstanmc.cppkatstan)) = tsOk
						Delete Current ppkatstan;
						}
		cmCheckField:
						{
						updatetable;
						SetModified(true);
						update current ppkatstan;
						RescanPanel(#ppkatstan);
						}
	   end;


 handleEvent
	 		cmInit:
			 		{
		 				ClearColumnsSorting(bMc);
						if( check = FALSE )
						  cfsSetProp('bMc','StatusCtx', Sci1478Esc);
						else if check=true
						{
						  cfsSetProp('bMc','StatusCtx',Sci1478EnEsc);
						}
						if getfirst ppkatstan where((kstan==ppkatstan.atl_nrec))=tsOk
						{
						}
						rescanpanel(#ppkatstan);
					}
			cmEdit:
					{
					  kgroupnrec:=groupmc.nrec;
					  ketalonnrec:=k1.nrec;
					  kstan:=ppkatstan.atl_nrec;
					  res:=RunInterface('ietalon',kstan,kgroupnrec,ketalonnrec);
					  if getfirst ppkatstan where((kstan==ppkatstan.atl_nrec))=tsOk
					  {
						ppkatstan.cmc:=ketalonnrec;
						ppkatstan.cgroupmc:=kgroupnrec;
						update current ppkatstan;
					  }
					  rescanpanel(#ppkatstan);

					}
			cmDefault:
					{
					 if check=true
					  {kstan:=ppkatstan.atl_nrec;}
						else stop;


					}
			cmClose:
					{
						  CloseInterface(cmDefault);
						  stop;
					}
			cmColumnClicked :
					{
					 case Target of
					 #ppkatstan.name :
					 	{
	 					 SetOrder(tibyppkatmc);
						 SetTableBackOrderIn(#ppkatstan,GetColumnSorting(bMc,target)=1);
						 SetColumnSorting(bMc,target,if(GetColumnSorting(bMc,target)=0,1,GetColumnSorting(bMc,target)*(-1)));
						RereadRecord(#ppkatstan);
					 	}
					 #k1.name:
					 	{
						SetOrder(tibyk1);
						SetTableBackOrderIn(#k1,GetColumnSorting(bMc,target)=1);
						SetColumnSorting(bMc,target,if(GetColumnSorting(bMc,target)=0,1,GetColumnSorting(bMc,target)*(-1)));
						RereadRecord(#k1);
						}
					#groupmc.name:
					   {
					   SetOrder(tibygr);
					   SetTableBackOrderIn(#groupmc,GetColumnSorting(bMc,target)=1);
					   SetColumnSorting(bMc,target,if(GetColumnSorting(bMc,target)=0,1,GetColumnSorting(bMc,target)*(-1)));
						RereadRecord(#groupmc);
					   }
					 end;
					}
 end;
end.
Проблема заключается в том, что сортировка происходит только по полю корневой таблицы ppkatstan.name, а по k1.name сортировка, по-видимому, срабатывает, но почему-то по k1.nrec(я так думаю), по groupmc.name вообще не работает. Так вот. Можно ли cделать сортировку по выбранному полю брауза, даже, если это поле не является полем корневой таблицы в браузе?
Ответить