Скроллирование вниз

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Добрый день

C55,ABC

Имею ABC-броуз (страничная загрузка) с несколькими закладками. Хочу переопределить порядок сортировки по одной из закладок. Пишу
BRW1.AppendOrder('*-SPI:Wait_Date'). Всё хоккей, отсортировано так как надо. Дальше варианты:

1)Скроллирую вниз стрелкой, доходим до конца списка, останавливаемся на последней записи. Указатель скроллбара внизу.
2)Скроллирую вниз PageDown, доходим до конца списка, останавливаемся на последней записи. Указатель скроллбара внизу.
3)Скроллирую вниз, нажимая End. Перематывается на последнюю запись в выборке, но указатель скроллбара в середине. Если теперь нажать стрелку вниз, лист заполняется дальше, начиная со второй записи.

Попытался проследить, что происходит в BrowseClass.ScrollEnd, но пока не понял, что к чему. Наверно, позиция View сбивается, и NEXT(View) начинает читать выборку заново. Может, кто знает, как победить?

С уважением, Михаил

(Добавление)

Hi

А зачем эти сложности? Прямо в шаблоне тиражируешь условие нужной закладки
CHOICE(...) = TabN и добавляешь на оба этих условных варианта условие порядка сортировки ... AND SortOrder = 1 ; ... AND SortOrder = 2. Оба варианта сортировки будут на одной закладке. Возможно еще придется в Reset Fields что-то прописать.

WBR, Nick Tsigouro Mailto:N.Tsigouro@mtu-net.ru

Какие сложности? Добавляю 1 (одну строку)
BRW1.AppendOrder('*-SPI:Wait_Date')
Скроллинг по стрелке и странице работает, по End глючит.

ЗЫ
Звёздочка в строке-параметре AppendOrder, если кто не знает (а в доке о ней ни слова), означает полная замена ранее определенного {prop:order}

Я специально умолчал о драйвере MSSQL, думал, что рояля не играет, ан нет.
Короче, положение исправляет
'*-SPI:Wait_Date,SPI:spInvId', где SPI:spInvId - уникальный Id

Михаил

Правило номер дцать при работе с SQL акселераторами, сортировки в Browse должны быть уникальными, для этих целей и придумано в свойствах шаблона Additional Sort Fields, но это не есть гуд, т к по хорошему надо предусмотреть и индексы в БД на эти сортировки, чтобы Browse более менее шустро работало на больших выборках и на скроллингах вверх/вних по Browse.
По хорошему, чем меньше полей учавставуют в ORDER BY тем лучше, иначе шибко сложные конструкции WHERE формируются при скроллингах в Browse.

ЗЫ
При загрузке File - всё грузим, непонятно зачем нужен этот ORDER BY, почему не взять всё и отсортироваь на клиенте, и поиск осуществлять по выборке на клиенте. ORDER BY это трудозатратная операция для сервера, чтобы получить результат, отсортированная выборка формируется сначало на сервере, ну а потом отдаётся на клиента, в результате первый NEXT тормозит. На ORACEL, например, без ORDER BY и с наличием хинта /* +FIRST_ROWS */ выборка на клиента идёт моментально без всяких задержек.

Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
Yahoo group: clarion@yahoogroups.com
Скроллинг по стрелке и странице работает, по End глючит.
Я именно эти сложности имел ввиду. Задачка имхо решается одинаково и на легаси, и на АВС, причем без вникания в генерируемый код (легаси) и изучения АВС методов.

WBR, Nick Tsigouro
Написал: ClaList(2)
Ответить