Страница 1 из 1
					
				фильтры и сортировки
				Добавлено: 28 апр 2003, 12:11
				 margo
				Уважаемые! Помогите разъяснением возможностей галактики на поприще разнообразных сортировок данных в документах.
К примеру, необходимо установить сортировку по баркоду в спецификации ПЗ. Облазила всю настройку пользователя. Кое-что поменяла в настройках про МС, но результат необходимый не получила.
Очень интересуюсь такого рода вопросами. Прошу, по-возможности, не оставить без внимания мою просьбу.
			 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 13:37
				 Den
				
			 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 13:50
				 paul
				Нету в Уважаемой Галактике с двумя сотнями Программистами, расширенной сортировки, Например, запрос по SpSopr сортироавть по
KatMc.BarKod или (Еще круче, но !жизнено важно!)
((...
    const == KatSopr.cnZakaz
and KatSopr.nRec == SpSopr.cSopr
and SpSopr.cMcUsl == KatMc.nRec))
order by KatMc.BarKod;

и etc. Надо изгалятся со связями, переставлять левые и правые части,( но это эротика какая-то получается) применять Dounds-ы, при это запрос формируется па порядок дольше или даже на ДВА.
В Vipe не работает, В ARD - тоже.
Правда стоит Pervasive, но на SQL я думаю суть деля не меняется.
Опровергните, пожалуйста Меня.
 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 14:17
				 margo
				как-то всё совсем уж грустно выходит...
ещё в прошлом веке люди начали запускаться в космос... а в нашем 21 веке, галактика не принимает во внимание элементарные и необходимые вещи при работе с базой данных...
и назвать это эротикой - язык не поворачивается... не иначе как извращение и не назовёшь
			 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 15:41
				 edward_K
				по поводу широты сортировок 
1. если нет подходящего индекса то живой Sql не построишь - на всех СУБД это будет решаться выгрузкой в определенную таблицу в память - в этом смысле Галактика не очень далеко ушла.
2. bounds(впрочем как и сортировки в ard работают - правда сам не пробовал - но по моей подсказке попробовали-сказали спасибо)
  имя_вьюера.PushBounds(tbваш_bounds)
3.самый оптимальный вариант использовать некую временую таблицу с сортировкой по текстовому полю и на ее основе строить select-длина индекса не может превышать 250 символов. я предпочитаю свои, но можно либо таблицы в памяти, либо существующие из словаря(Formarks например)
4.в выборе пользовательской аналитики 584 можно менять сортировку нажатием на шапку колонки - но для всего так не сделать. 
 

 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 17:02
				 margo
				Я, конечно, очень благодарна вам, Edvard_K, за конструктивный ответ, но дело в том, что я ещё не "ухарь безвозмездный" в этой области... и для меня не всё так ясно (прошу прощения за бессовестное признание в своём непрофессионализме... пока) 

Не могли бы вы мне конкретно по шагам объяснить, как решить свою проблему (вышепредставленную)пользуясь п2 или п3 вашей методы... чтобы я уяснила на примере?
Будте так добры и сочтите это за доблестное действо. 

 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 17:29
				 Den
				Мож, конечно, я не прав, но по первому пункту Edward-a ответ не так однозначен.
Например, в TSQL MSSQL при использовании order by без наличия нужного индекса в select-e время выборки немного отличается от того, когда этот индекс есть.В галактическом SQL - разница во времени более существенна.Конечно, я не говорю, что совсем без индексов нужно обходиться...
			 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 17:29
				 edward_K
				2 пункт
.Form PERSSORT
.ard
.var
  wtyp :word ;
.endvar
.create view vpers
 as select persons.fio,persons.tabnmb
 where (( 'С' == Persons.ISEMPLOYEE ))
 bounds byFio = 'С' == Persons.ISEMPLOYEE
      ordered by Persons.ISEMPLOYEE,persons.fio
 bounds bytabn = 'С' == Persons.ISEMPLOYEE
   ordered by Persons.ISEMPLOYEE,persons.tabnmb
;
.begin
  wtyp:=1 ;
  case wtyp of
  0: vpers.PushBounds(tbbyfio) ;
  else vpers.PushBounds(tbbytabn) ;
  end ;
 end.
.fields
  vpers.persons.tabnmb
  vpers.persons.fio
.endfields
.{table 'vpers.persons'
 @@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
.}
.endform
меняйте wtyp в програмном блоке и пря из support смотрите(shift+F9-выполнение)
			 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 17:39
				 edward_K
				3 пункт посложнее - укажу только основные моменты.
.begin
//  берем таблу formarks
//грохаем все где 55 == formarks.choice
vpers.delete formarks where (( 55 == formarks.choice )) ;
// заполняем поля
if vpers.getfirst persons=0
do begin
  vpers.formarks.choice:=55 ;
  vpers.formarks.fio:=vpers.persons.fio ;
// здесь пишем некое выражение для сортировки
// можно и в fio - если ключа не хватит
  vpers.formarks.field2:=vpers.persons.fio ;
  vpers.formarks.cpodr :=vpres.persons.nrec
  vpers.insert current formarks ;
end while vpers.getnext persons=tsok ; 
в select пишем
from formarks(formarks12)
((
 formarks.cpodr == persons.nrec
)) ;
и вывод делаем соотв. по табле formarks
а дальше ограничено только вашей фантазией.
Я обычно беру pad(substr(name,1,20,20)+string(nrec,20)
 

 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 17:48
				 edward_K
				DEN
конечно - тут весь вопрос в способе создания вьюхи для сортировки - я могу сказать,что можно строить произвольные сортировки и в гале - но когда дело доходит до произвольной сортировки и гала ругается что select можно построить только на внешней выгрузке,то на Pervasive это сильно тормозит.
Вопрос - никто не пробовал на MsSql или Oracle Галактике пользоваться внешними выгрузками?
			 
			
					
				Re: фильтры и сортировки
				Добавлено: 28 апр 2003, 18:01
				 Den
				В смысле на Галактике под MSSQL или Oracle средствами Atlantis-а ?
А pervasive мож и не тормозило бы, если бы разработчики использовали возможности Sqalable SQl
			 
			
					
				2Den
				Добавлено: 29 апр 2003, 08:29
				 Goblin
				Не Scalable SQL, а Transactional Engine(с 2000 релиза) - тогда мож быть и имело место отсутствия тормозов, хотя вряд ли - юн еще Pervasive в ентом смысле ... 
а именно Scalable SQL(на 7-ке и ниже) - увольте, более тормозной вещи не видемши ...
			 
			
					
				Re: 2Den
				Добавлено: 29 апр 2003, 11:50
				 paul
				Edward_K
твой пункт 2 в ARD работает по всем внешним выгрузкам, только успевай подставлять SetOrder(tiТвой_Ордер);
а в VIP-е можно использовать order by или bounds + ordered by только по индексам корневой таблицы. например корневая таблица одна, а сортировать нужно по индексу 2-ой или 3-ей подцепляемой таблице. 
На самом деле, в жизни я встречаю часто, такие условия задач.
иначе только применять пункт 3.
Этим ограничением Языка, Галактионщики и создают свои коды программ закрытыми, т.е. более сложными и трижды закрученными в понимании и читабельности.
Твои Учебные аргументы в данном случае не прокатят.
А например, мне нужно внести изменение в корневую таблицу? Мне что, зайти в tmp-файл
(formark)брать ссылку на нее и запускать доп. функцию update корневая таблица?
			 
			
					
				Re: 2Den
				Добавлено: 29 апр 2003, 17:19
				 edward_K
				в корневую в смысле Persons в моем примере - у меня то вроде предполагается, что корневая formarks?
1. для этого есть синонимы.
2. если надо поменять Persons и после этого исправить сортировку то придется исправить и соотв.запись в formarks конечно. просто в случае SQL(MS того же) все это делается подобным же образом,но на уровне драйверов. здесь придется поизгаляться.