Сортировка по составному ключу

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gudkov
Бывалый
Сообщения: 67
Зарегистрирован: 03 Август 2005, 14:03
Откуда: Иркутск

Сортировка по составному ключу

Сообщение gudkov »

Здравствуйте все.

Проблема такая, есть брауз, в который производиться выборка через rangelimit (С6.2ШВС), эта выборка производиться по составному ключу типа: fil:k_sort
|-id
|-name
Так вот, выборка производиться по полю id, которое в ключе соответственно первое, но после выборки, брауз должен быть упорядочен по полю name, как это реализовать? Если поставить поле id вторым в ключе, rangelimit не срабатывает, упорядочить брауз после выборки при постраничной загрузке, тоже проблематично (в ШВС к сожалению, только Page метод заполнения брауза). Попробовал переустанавливать после выборки View, по другому ключу, но это криво и тормозно. Подскажите, как быть?
Удачи!
Аватара пользователя
Олег
Ветеран движения
Сообщения: 122
Зарегистрирован: 16 Июль 2005, 2:35
Откуда: Москва
Контактная информация:

Сообщение Олег »

Насколько я понимаю, проблема только при выборке не по одному значению ID, а по диапазону значений этого поля?
Есть два варианта:
- оставить текущий ключ, но в бровзе дополнительно задать порядок сортировки выборки. Кажеться в ШВС-шаблоне бровза есть такая возможность.
- использовать ключ только с одним полем NAME и в качестве фильтра задать что-то типа "(ID => loc:Lo) AND (ID <= loc:Hi)"

В обеих случаях, естественно, будет подтормаживать. Хотя, я бы использовал второй вариант, как более логичный.

Есть еще два варианта:
- отобрать нужные записи в очередь, отсортировать ее и показать в обычном листе. Для большей функциональности можно поискать шаблон бровза по очереди - что-то похожее было, кажется.
- задекларировать динамический ключ и по нему сделать бровз, в котором этот ключ вначале и создавать по нужному условию.

Вообщем, в любом случае, поставленная задача не может быть решена иначе, что позволит создать "быструю" выборку.
gudkov
Бывалый
Сообщения: 67
Зарегистрирован: 03 Август 2005, 14:03
Откуда: Иркутск

Сообщение gudkov »

Да, проблема при выборке по id через 'очередь значений' и по диапазону. После выборки, брауз получаеться упорядоченым именно по id, а нужно, по name, например(вид брауза) упорядочиваеться так:
name id
Иванов 1
Абрамов 2

а нужно так:
name id
Абрамов 2
Иванов 1

Ну первый вариант через prop:order это действительно большие тормоза, особенно на большой выборке. и второй вариант с фильтром не годиться, так как есть браузы, в которых выборка у меня производиться через 'очередь значений' (есть в ШВС такой вид rangelimit'a). Насчет отбора записей в очередь, все бы удобно, но там будут проблемы с редактированием файла, по которому строиться брауз.
А вот про динамический ключ нельзя ли поподробнее,как его задекларировать, как это реализовать, честно говоря никогда не работал с динамическими ключами, видимо это единственный более менее пригодный по скорости способ.

Кстати в ШВС нет дополнительного задания сортировки для обычного листа, есть для дроплиста и для дропкомбо, но в принципе ведь эта сортировка задаеться через prop:order, так что это нетрудно прописать руками, еслиб не тормознутость этого решения.
Удачи!
gudkov
Бывалый
Сообщения: 67
Зарегистрирован: 03 Август 2005, 14:03
Откуда: Иркутск

Сообщение gudkov »

Ау, коллеги.

Неужто никто не может подсказать, как задеклалрировать динамический ключ, для выборки в брауз. Сам после перехода с СPD с такими вещами не сталкивался. :(
Удачи!
softcreator
Ветеран движения
Сообщения: 78
Зарегистрирован: 04 Август 2005, 9:35
Контактная информация:

Сообщение softcreator »

Вот же ж госсыди... А что - открыть хелп, в строке поиска набрать слово dynamic - сложно?!! Ну я просто фигею иногда с народа!!!
После набора этого слова видим топики "dynamic INDEX" и "Dynamic index:BUILD" - и вдумчиво читаем.
Ответить