Страница 1 из 1
					
				VIP - подсобите с сортировкой browse
				Добавлено: 08 апр 2003, 13:14
				 GTHack
				хочу сделать два окошка browse
одно - ДО, второе - накладные для выбранного ДО в первом окошке. ДО должны сортироваться по датам (а у меня по номерам) 
 
Interface two_panel 'Две панели' EscClose,cyan;
show at (5,5,150,25);
create view
As select * From basedoc, stepdoc, katsopr
where
((
201/==basedoc.viddoc and
basedoc.nrec /== stepdoc.cbasedoc and
stepdoc.nrec /== katsopr.cstepdoc));
panel P1
browse BDO;
show at(,,50,);
table basedoc;
fields
basedoc.ddoc   'Дата DO':[20],protect;
basedoc.nodoc   'Номер DO':[20],protect;
end;
end;
panel P2
browse BN;
show at(101,,144,);
table katsopr;
fields
katsopr.dsopr   'Дата накл.':[20],protect;
katsopr.nsopr   'Номер накл.':[20],protect;
end;
end;
end.
 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 08 апр 2003, 13:29
				 GTHack
				помогло 
order by basedoc.ddoc;
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 11 апр 2003, 13:39
				 paul
				Измени шапку запроса
create view
As select * From basedoc(basedoc05)  where((
...
));
Будет сортироватся по Пятому индексу.
order - работает медленно.
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 11 апр 2003, 14:19
				 GTHack
				спасибо за ценный совет !
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 11 апр 2003, 22:12
				 ecasoft
				Алекс!
 Интересно, а почему используют не просто подцепку ==, а /==? И вообще тут написали и order by и в подцепке и явное задание индекса - все это может противоречить одно другому, если не понимать как это все взаимосвязано. 
 
 Я смотрю здесь /== так часто используют, хотя сами разработчики Галактики этим практически не пользуются.
 Для поcтроения запроса (особенно если еще хочешь чтобы он нормльльно отражался в разных окнах интерефейса) надо начать с просмотра индексов таблицы Basedoc. Индексы и задают порядок,в котором будут выводится записи, если в панеле интерфейса задано table basedoc. В секции where при записи через == Вы неявно задаете индекс. Все поля стоящие справа от == и дают составной индекс. Индекс подбирается компилятором. Одной подцепке могут соответсвовать несколько индексов. Чтобы указать какой именно, то используется указание индекса в скобках после имени таблицы. В других случаях это используется редко.
Если написать 
where ((
 word(201)    ==  Basedoc.viddoc      and
 tmpDateBeg   <<= Basedoc.dDoc      and
 tmpDateEnd   >>= BaseDoc.dDoc      and
 BaseDoc.Nrec ==  StepDoc.cBaseDoc and
 StepDoc.Nrec ==  KatSopr.cStepDoc 
))
где переменные задают интервал просмотра.
то для сортировки по дате никаких дополнительного указания индексов не нужно, а также порядков и т.д. Это самый быстрый способ работы. Будет нормальная визуализация в окнах.
Игорь
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 09:26
				 GTHack
				Игорь, спасибо за разъяснение, но в данном случае запрос довольно типичный - сортировка определяется по полям одной таблички и для порядка сортировки существует индекс.
а если сортировать надо по данным из нескольких таблиц?
Select
ExClassSeg.name, KatCity.name, KatOrg.Name
From KatOrg, ExClassval, ExClassSeg, basedoc
Where ((
KatOrg.ccity ==  KatCity.nRec
and ExClassVal.cClassSeg == ExClassSeg.nRec
and KatOrg.nRec == ExClassVal.cRec 
and word (1)    == ExClassVal.ClassCode
and word (1418) == ExClassVal.wTable
and basedoc.corg == katorg.nrec
and date(1,1,2003)<<=basedoc.ddoc(noindex)
and date(1,4,2003)>>=basedoc.ddoc(noindex)
)) order by ExClassSeg.name, KatCity.name, KatOrg.Name;
сделал order by и получил в ответ предупреждение
"с ограничением Relation Порядок Standart реализуется во внешней выгрузке"
- т.е. она сначала все данные выгружает на локальный комп а потом только накладывает условия и сортирует ?? или как ?
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 09:35
				 GTHack
				да и ещё - как видно по запросу тут строчки дублируются (из за basedoca)
distinct бы после селекта ... а его нет 

 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 09:53
				 Den
				Если сортировать надо по индексам из нескольких таблиц то выходов несколько :
1.Подбираешь нужные тебе индексы в разных таблицах.(если ,конечно, таковые имеются).
2.Делаешь свои нужные индесы в соответсвующих таблицах.
3.Выгружаешь данные в table struct - и "извращаешься" там как угодно 

 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 11:17
				 ecasoft
				Алекс!
 Вы не понимаете, что это не SQL просто...я посмотрел Ваш запрос и вообще не понял, что Вы хотите получить...В самом начале Вы хотели совсем другое, по-моему. Теперь появилась классификация...И вы пытаетесь все делать как в настоящем SQL, а это не SQL. Поэтому дело не в сложности запроса, а в том, что просто надо начать с того, как работает ВООБЩЕ Галактический SQL. Может коненчо я ошибаюсь - тогда Вы меня простите пожалуйста. Я просто хотел Вам помочь.
 Если почитать этот запрос, то в нем выведутся все ДО за период без каких-либо ограничений вообще...Если Вы думаете, что здесь задали ограничения по организации (вернее признакам, привязанным к организации), то это не так.
 И не пользуйтесь Вы noindex - не пользуются этим в интерфейсах! Старайтесь пользоваться лучше конструкцией
    В.pole1      == C.pole3 and 
     ( C.pole4 = B.pole2 and
          C.pole6 = P.pole6) and
    W.oo   == G.ppp
    .... 
     
 Чтобы компилятор не ругался на отсутствие индекса. 
 С уважением, Игорь.
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 11:41
				 GTHack
				Игорь, изо всех сил благодарен Вам за Вашу помощь!
что получить я хотел звучит примерно так:
вывести список организаций у которых за заданный период были движения в basedoc с сортировкой 
1. менеджер (внеш.классификатор к организ.) 
        2. город организации
                3. наименование организации
 
ограничения я задал только на дату ddoc
остальное - подцепки (если не считать ограничений на внеш.классификатор - wtable и classcode)
по датам ограничения работают - проверял
да и вообще запрос рабочий, может и кривой в корягу, но в суппортовском sql работает
как работает ВООБЩЕ Галактический SQL я действительно не совсем понимаю (или вообще не понимаю:( ) т.к. с этим мучаюсь уже второй день - а на accesse написал его за пару минут и всё работает быстро и с сортировками и вообще как надо, мне надо то же самое токо в Галактике
пример на счёт noindex я не понял 

можно "для тупых" по подробнее
 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 12:18
				 Nuts
				Народ
а как в новых фейсах галактики  в шапке
брауза стоит серый треугольник нажимаенешь ^ меняется на V и порядок вывода меняется.
Что это за событие и как его прицепить к шапке брауза? ???
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 12:40
				 forummaster
				<HTML>получить порядок сортировки :
function GetColumnSorting( aBrowseId : LongInt; aFieldNo  : Integer ) : Integer;
установить порядок сортировки :
procedure SetColumnSorting( aBrowseId : LongInt; aFieldNo  : Integer; aSortMode : Integer ) ;
aSortMode: 0 - SortNone, 1 - SortUp, -1 - SortDown 
Сброс всех порядков сортировки
procedure ClearColumnsSorting( aBrowseId : LongInt )
...
browse browseW '' ;
table tableX ;
fields
tableX.fieldY '' : ... ;
tableX.fieldZ '' : ... ;
end;
....
handleEvent
...
cmColumnClicked :
{
var ltmpvalue : longint ;
ltmpvalue := targeT ;
case( ltmpvalue ) of
#tableX.fieldY :
begin
setColumnSorting( browseW, ltmpValue, -1 ) ;
setOrder( tibyYYYY ) ;
end;
#tableX.fieldZ :
begin
setColumnSorting( browseW, ltmpValue, -1 ) ;
setOrder( tibyZZZZ ) ;
end;
else setColumnSorting( browseW, ltmpValue, 0 ) ;
end;
rescanPanel( tntableX ) ;
}
....
end;  // handleevent</HTML>
			 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 12:52
				 Nuts
				Ухты класс! Спасибо! А то больно уж юзерам это нравится 

 бум пробовать применять...
 
			
					
				Re: VIP - подсобите с сортировкой browse
				Добавлено: 18 апр 2003, 13:02
				 GTHack
				эта фенечка начиная с какой версии работает ? 
