Здравствуйте все.
Проблема такая, есть брауз, в который производиться выборка через rangelimit (С6.2ШВС), эта выборка производиться по составному ключу типа: fil:k_sort
|-id
|-name
Так вот, выборка производиться по полю id, которое в ключе соответственно первое, но после выборки, брауз должен быть упорядочен по полю name, как это реализовать? Если поставить поле id вторым в ключе, rangelimit не срабатывает, упорядочить брауз после выборки при постраничной загрузке, тоже проблематично (в ШВС к сожалению, только Page метод заполнения брауза). Попробовал переустанавливать после выборки View, по другому ключу, но это криво и тормозно. Подскажите, как быть?
Сортировка по составному ключу
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Олег
- Ветеран движения
- Сообщения: 122
- Зарегистрирован: 16 Июль 2005, 2:35
- Откуда: Москва
- Контактная информация:
Насколько я понимаю, проблема только при выборке не по одному значению ID, а по диапазону значений этого поля?
Есть два варианта:
- оставить текущий ключ, но в бровзе дополнительно задать порядок сортировки выборки. Кажеться в ШВС-шаблоне бровза есть такая возможность.
- использовать ключ только с одним полем NAME и в качестве фильтра задать что-то типа "(ID => loc:Lo) AND (ID <= loc:Hi)"
В обеих случаях, естественно, будет подтормаживать. Хотя, я бы использовал второй вариант, как более логичный.
Есть еще два варианта:
- отобрать нужные записи в очередь, отсортировать ее и показать в обычном листе. Для большей функциональности можно поискать шаблон бровза по очереди - что-то похожее было, кажется.
- задекларировать динамический ключ и по нему сделать бровз, в котором этот ключ вначале и создавать по нужному условию.
Вообщем, в любом случае, поставленная задача не может быть решена иначе, что позволит создать "быструю" выборку.
Есть два варианта:
- оставить текущий ключ, но в бровзе дополнительно задать порядок сортировки выборки. Кажеться в ШВС-шаблоне бровза есть такая возможность.
- использовать ключ только с одним полем NAME и в качестве фильтра задать что-то типа "(ID => loc:Lo) AND (ID <= loc:Hi)"
В обеих случаях, естественно, будет подтормаживать. Хотя, я бы использовал второй вариант, как более логичный.
Есть еще два варианта:
- отобрать нужные записи в очередь, отсортировать ее и показать в обычном листе. Для большей функциональности можно поискать шаблон бровза по очереди - что-то похожее было, кажется.
- задекларировать динамический ключ и по нему сделать бровз, в котором этот ключ вначале и создавать по нужному условию.
Вообщем, в любом случае, поставленная задача не может быть решена иначе, что позволит создать "быструю" выборку.
Да, проблема при выборке по id через 'очередь значений' и по диапазону. После выборки, брауз получаеться упорядоченым именно по id, а нужно, по name, например(вид брауза) упорядочиваеться так:
name id
Иванов 1
Абрамов 2
а нужно так:
name id
Абрамов 2
Иванов 1
Ну первый вариант через prop:order это действительно большие тормоза, особенно на большой выборке. и второй вариант с фильтром не годиться, так как есть браузы, в которых выборка у меня производиться через 'очередь значений' (есть в ШВС такой вид rangelimit'a). Насчет отбора записей в очередь, все бы удобно, но там будут проблемы с редактированием файла, по которому строиться брауз.
А вот про динамический ключ нельзя ли поподробнее,как его задекларировать, как это реализовать, честно говоря никогда не работал с динамическими ключами, видимо это единственный более менее пригодный по скорости способ.
Кстати в ШВС нет дополнительного задания сортировки для обычного листа, есть для дроплиста и для дропкомбо, но в принципе ведь эта сортировка задаеться через prop:order, так что это нетрудно прописать руками, еслиб не тормознутость этого решения.
name id
Иванов 1
Абрамов 2
а нужно так:
name id
Абрамов 2
Иванов 1
Ну первый вариант через prop:order это действительно большие тормоза, особенно на большой выборке. и второй вариант с фильтром не годиться, так как есть браузы, в которых выборка у меня производиться через 'очередь значений' (есть в ШВС такой вид rangelimit'a). Насчет отбора записей в очередь, все бы удобно, но там будут проблемы с редактированием файла, по которому строиться брауз.
А вот про динамический ключ нельзя ли поподробнее,как его задекларировать, как это реализовать, честно говоря никогда не работал с динамическими ключами, видимо это единственный более менее пригодный по скорости способ.
Кстати в ШВС нет дополнительного задания сортировки для обычного листа, есть для дроплиста и для дропкомбо, но в принципе ведь эта сортировка задаеться через prop:order, так что это нетрудно прописать руками, еслиб не тормознутость этого решения.
Удачи!
-
- Ветеран движения
- Сообщения: 78
- Зарегистрирован: 04 Август 2005, 9:35
- Контактная информация: