фильтры и сортировки
Модераторы: m0p3e, edward_K, Модераторы
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Урал АП Пластик
- Контактная информация:
фильтры и сортировки
Уважаемые! Помогите разъяснением возможностей галактики на поприще разнообразных сортировок данных в документах.
К примеру, необходимо установить сортировку по баркоду в спецификации ПЗ. Облазила всю настройку пользователя. Кое-что поменяла в настройках про МС, но результат необходимый не получила.
Очень интересуюсь такого рода вопросами. Прошу, по-возможности, не оставить без внимания мою просьбу.
К примеру, необходимо установить сортировку по баркоду в спецификации ПЗ. Облазила всю настройку пользователя. Кое-что поменяла в настройках про МС, но результат необходимый не получила.
Очень интересуюсь такого рода вопросами. Прошу, по-возможности, не оставить без внимания мою просьбу.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: фильтры и сортировки
Марго, если нет необходимых режимов сортировок в настройках пользователя (систменых) - то изменить нельзя никак кроме как переделки исходника нужного интерфейса.Ну или галактистам проблему описывать надо
Re: фильтры и сортировки
Нету в Уважаемой Галактике с двумя сотнями Программистами, расширенной сортировки, Например, запрос по 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 я думаю суть деля не меняется.
Опровергните, пожалуйста Меня.
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 я думаю суть деля не меняется.
Опровергните, пожалуйста Меня.
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Урал АП Пластик
- Контактная информация:
Re: фильтры и сортировки
как-то всё совсем уж грустно выходит...
ещё в прошлом веке люди начали запускаться в космос... а в нашем 21 веке, галактика не принимает во внимание элементарные и необходимые вещи при работе с базой данных...
и назвать это эротикой - язык не поворачивается... не иначе как извращение и не назовёшь
ещё в прошлом веке люди начали запускаться в космос... а в нашем 21 веке, галактика не принимает во внимание элементарные и необходимые вещи при работе с базой данных...
и назвать это эротикой - язык не поворачивается... не иначе как извращение и не назовёшь
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: фильтры и сортировки
по поводу широты сортировок
1. если нет подходящего индекса то живой Sql не построишь - на всех СУБД это будет решаться выгрузкой в определенную таблицу в память - в этом смысле Галактика не очень далеко ушла.
2. bounds(впрочем как и сортировки в ard работают - правда сам не пробовал - но по моей подсказке попробовали-сказали спасибо)
имя_вьюера.PushBounds(tbваш_bounds)
3.самый оптимальный вариант использовать некую временую таблицу с сортировкой по текстовому полю и на ее основе строить select-длина индекса не может превышать 250 символов. я предпочитаю свои, но можно либо таблицы в памяти, либо существующие из словаря(Formarks например)
4.в выборе пользовательской аналитики 584 можно менять сортировку нажатием на шапку колонки - но для всего так не сделать.
1. если нет подходящего индекса то живой Sql не построишь - на всех СУБД это будет решаться выгрузкой в определенную таблицу в память - в этом смысле Галактика не очень далеко ушла.
2. bounds(впрочем как и сортировки в ard работают - правда сам не пробовал - но по моей подсказке попробовали-сказали спасибо)
имя_вьюера.PushBounds(tbваш_bounds)
3.самый оптимальный вариант использовать некую временую таблицу с сортировкой по текстовому полю и на ее основе строить select-длина индекса не может превышать 250 символов. я предпочитаю свои, но можно либо таблицы в памяти, либо существующие из словаря(Formarks например)
4.в выборе пользовательской аналитики 584 можно менять сортировку нажатием на шапку колонки - но для всего так не сделать.
-
- Посетитель
- Сообщения: 30
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Урал АП Пластик
- Контактная информация:
Re: фильтры и сортировки
Я, конечно, очень благодарна вам, Edvard_K, за конструктивный ответ, но дело в том, что я ещё не "ухарь безвозмездный" в этой области... и для меня не всё так ясно (прошу прощения за бессовестное признание в своём непрофессионализме... пока)
Не могли бы вы мне конкретно по шагам объяснить, как решить свою проблему (вышепредставленную)пользуясь п2 или п3 вашей методы... чтобы я уяснила на примере?
Будте так добры и сочтите это за доблестное действо.
Не могли бы вы мне конкретно по шагам объяснить, как решить свою проблему (вышепредставленную)пользуясь п2 или п3 вашей методы... чтобы я уяснила на примере?
Будте так добры и сочтите это за доблестное действо.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: фильтры и сортировки
Мож, конечно, я не прав, но по первому пункту Edward-a ответ не так однозначен.
Например, в TSQL MSSQL при использовании order by без наличия нужного индекса в select-e время выборки немного отличается от того, когда этот индекс есть.В галактическом SQL - разница во времени более существенна.Конечно, я не говорю, что совсем без индексов нужно обходиться...
Например, в TSQL MSSQL при использовании order by без наличия нужного индекса в select-e время выборки немного отличается от того, когда этот индекс есть.В галактическом SQL - разница во времени более существенна.Конечно, я не говорю, что совсем без индексов нужно обходиться...
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: фильтры и сортировки
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-выполнение)
.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-выполнение)
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: фильтры и сортировки
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)
.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)
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: фильтры и сортировки
DEN
конечно - тут весь вопрос в способе создания вьюхи для сортировки - я могу сказать,что можно строить произвольные сортировки и в гале - но когда дело доходит до произвольной сортировки и гала ругается что select можно построить только на внешней выгрузке,то на Pervasive это сильно тормозит.
Вопрос - никто не пробовал на MsSql или Oracle Галактике пользоваться внешними выгрузками?
конечно - тут весь вопрос в способе создания вьюхи для сортировки - я могу сказать,что можно строить произвольные сортировки и в гале - но когда дело доходит до произвольной сортировки и гала ругается что select можно построить только на внешней выгрузке,то на Pervasive это сильно тормозит.
Вопрос - никто не пробовал на MsSql или Oracle Галактике пользоваться внешними выгрузками?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: фильтры и сортировки
В смысле на Галактике под MSSQL или Oracle средствами Atlantis-а ?
А pervasive мож и не тормозило бы, если бы разработчики использовали возможности Sqalable SQl
А pervasive мож и не тормозило бы, если бы разработчики использовали возможности Sqalable SQl
-
- Местный житель
- Сообщения: 474
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Сибирь-матушка
- Контактная информация:
2Den
Не Scalable SQL, а Transactional Engine(с 2000 релиза) - тогда мож быть и имело место отсутствия тормозов, хотя вряд ли - юн еще Pervasive в ентом смысле ...
а именно Scalable SQL(на 7-ке и ниже) - увольте, более тормозной вещи не видемши ...
а именно Scalable SQL(на 7-ке и ниже) - увольте, более тормозной вещи не видемши ...
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Re: 2Den
Edward_K
твой пункт 2 в ARD работает по всем внешним выгрузкам, только успевай подставлять SetOrder(tiТвой_Ордер);
а в VIP-е можно использовать order by или bounds + ordered by только по индексам корневой таблицы. например корневая таблица одна, а сортировать нужно по индексу 2-ой или 3-ей подцепляемой таблице.
На самом деле, в жизни я встречаю часто, такие условия задач.
иначе только применять пункт 3.
Этим ограничением Языка, Галактионщики и создают свои коды программ закрытыми, т.е. более сложными и трижды закрученными в понимании и читабельности.
Твои Учебные аргументы в данном случае не прокатят.
А например, мне нужно внести изменение в корневую таблицу? Мне что, зайти в tmp-файл
(formark)брать ссылку на нее и запускать доп. функцию update корневая таблица?
твой пункт 2 в ARD работает по всем внешним выгрузкам, только успевай подставлять SetOrder(tiТвой_Ордер);
а в VIP-е можно использовать order by или bounds + ordered by только по индексам корневой таблицы. например корневая таблица одна, а сортировать нужно по индексу 2-ой или 3-ей подцепляемой таблице.
На самом деле, в жизни я встречаю часто, такие условия задач.
иначе только применять пункт 3.
Этим ограничением Языка, Галактионщики и создают свои коды программ закрытыми, т.е. более сложными и трижды закрученными в понимании и читабельности.
Твои Учебные аргументы в данном случае не прокатят.
А например, мне нужно внести изменение в корневую таблицу? Мне что, зайти в tmp-файл
(formark)брать ссылку на нее и запускать доп. функцию update корневая таблица?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: 2Den
в корневую в смысле Persons в моем примере - у меня то вроде предполагается, что корневая formarks?
1. для этого есть синонимы.
2. если надо поменять Persons и после этого исправить сортировку то придется исправить и соотв.запись в formarks конечно. просто в случае SQL(MS того же) все это делается подобным же образом,но на уровне драйверов. здесь придется поизгаляться.
1. для этого есть синонимы.
2. если надо поменять Persons и после этого исправить сортировку то придется исправить и соотв.запись в formarks конечно. просто в случае SQL(MS того же) все это делается подобным же образом,но на уровне драйверов. здесь придется поизгаляться.