фильтры и сортировки

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

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

Ответить
margo
Посетитель
Сообщения: 30
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Урал АП Пластик
Контактная информация:

фильтры и сортировки

Сообщение margo »

Уважаемые! Помогите разъяснением возможностей галактики на поприще разнообразных сортировок данных в документах.
К примеру, необходимо установить сортировку по баркоду в спецификации ПЗ. Облазила всю настройку пользователя. Кое-что поменяла в настройках про МС, но результат необходимый не получила.
Очень интересуюсь такого рода вопросами. Прошу, по-возможности, не оставить без внимания мою просьбу.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: фильтры и сортировки

Сообщение Den »

Марго, если нет необходимых режимов сортировок в настройках пользователя (систменых) - то изменить нельзя никак кроме как переделки исходника нужного интерфейса.Ну или галактистам проблему описывать надо :) ;) ;)
paul
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49
Откуда: урал -

Re: фильтры и сортировки

Сообщение 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 я думаю суть деля не меняется.
Опровергните, пожалуйста Меня.
margo
Посетитель
Сообщения: 30
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Урал АП Пластик
Контактная информация:

Re: фильтры и сортировки

Сообщение margo »

как-то всё совсем уж грустно выходит...
ещё в прошлом веке люди начали запускаться в космос... а в нашем 21 веке, галактика не принимает во внимание элементарные и необходимые вещи при работе с базой данных...
и назвать это эротикой - язык не поворачивается... не иначе как извращение и не назовёшь
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: фильтры и сортировки

Сообщение edward_K »

по поводу широты сортировок
1. если нет подходящего индекса то живой Sql не построишь - на всех СУБД это будет решаться выгрузкой в определенную таблицу в память - в этом смысле Галактика не очень далеко ушла.
2. bounds(впрочем как и сортировки в ard работают - правда сам не пробовал - но по моей подсказке попробовали-сказали спасибо)
имя_вьюера.PushBounds(tbваш_bounds)
3.самый оптимальный вариант использовать некую временую таблицу с сортировкой по текстовому полю и на ее основе строить select-длина индекса не может превышать 250 символов. я предпочитаю свои, но можно либо таблицы в памяти, либо существующие из словаря(Formarks например)
4.в выборе пользовательской аналитики 584 можно менять сортировку нажатием на шапку колонки - но для всего так не сделать.
:)
margo
Посетитель
Сообщения: 30
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Урал АП Пластик
Контактная информация:

Re: фильтры и сортировки

Сообщение margo »

Я, конечно, очень благодарна вам, Edvard_K, за конструктивный ответ, но дело в том, что я ещё не "ухарь безвозмездный" в этой области... и для меня не всё так ясно (прошу прощения за бессовестное признание в своём непрофессионализме... пока) ;)
Не могли бы вы мне конкретно по шагам объяснить, как решить свою проблему (вышепредставленную)пользуясь п2 или п3 вашей методы... чтобы я уяснила на примере?
Будте так добры и сочтите это за доблестное действо. :)
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: фильтры и сортировки

Сообщение Den »

Мож, конечно, я не прав, но по первому пункту Edward-a ответ не так однозначен.
Например, в TSQL MSSQL при использовании order by без наличия нужного индекса в select-e время выборки немного отличается от того, когда этот индекс есть.В галактическом SQL - разница во времени более существенна.Конечно, я не говорю, что совсем без индексов нужно обходиться...
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: фильтры и сортировки

Сообщение 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-выполнение)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: фильтры и сортировки

Сообщение 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)
:)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: фильтры и сортировки

Сообщение edward_K »

DEN
конечно - тут весь вопрос в способе создания вьюхи для сортировки - я могу сказать,что можно строить произвольные сортировки и в гале - но когда дело доходит до произвольной сортировки и гала ругается что select можно построить только на внешней выгрузке,то на Pervasive это сильно тормозит.
Вопрос - никто не пробовал на MsSql или Oracle Галактике пользоваться внешними выгрузками?
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: фильтры и сортировки

Сообщение Den »

В смысле на Галактике под MSSQL или Oracle средствами Atlantis-а ?
А pervasive мож и не тормозило бы, если бы разработчики использовали возможности Sqalable SQl
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

2Den

Сообщение Goblin »

Не Scalable SQL, а Transactional Engine(с 2000 релиза) - тогда мож быть и имело место отсутствия тормозов, хотя вряд ли - юн еще Pervasive в ентом смысле ...
а именно Scalable SQL(на 7-ке и ниже) - увольте, более тормозной вещи не видемши ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
paul
Посетитель
Сообщения: 37
Зарегистрирован: 29 мар 2005, 17:49
Откуда: урал -

Re: 2Den

Сообщение paul »

Edward_K
твой пункт 2 в ARD работает по всем внешним выгрузкам, только успевай подставлять SetOrder(tiТвой_Ордер);
а в VIP-е можно использовать order by или bounds + ordered by только по индексам корневой таблицы. например корневая таблица одна, а сортировать нужно по индексу 2-ой или 3-ей подцепляемой таблице.
На самом деле, в жизни я встречаю часто, такие условия задач.
иначе только применять пункт 3.
Этим ограничением Языка, Галактионщики и создают свои коды программ закрытыми, т.е. более сложными и трижды закрученными в понимании и читабельности.
Твои Учебные аргументы в данном случае не прокатят.
А например, мне нужно внести изменение в корневую таблицу? Мне что, зайти в tmp-файл
(formark)брать ссылку на нее и запускать доп. функцию update корневая таблица?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: 2Den

Сообщение edward_K »

в корневую в смысле Persons в моем примере - у меня то вроде предполагается, что корневая formarks?
1. для этого есть синонимы.
2. если надо поменять Persons и после этого исправить сортировку то придется исправить и соотв.запись в formarks конечно. просто в случае SQL(MS того же) все это делается подобным же образом,но на уровне драйверов. здесь придется поизгаляться.
Ответить