Страница 1 из 1

проблема скроллинга при использовании Condition c Маркером

Добавлено: 28 мар 2011, 16:48
beatlov
Добрый день!
После выполнения фильтра с помощью Condition по маркеру nrec ( condition fKat = FoundMarker(mMarkDoc, xxxx.ckatpodr ) при перемещении по отфильтрованным записям с помощью скроллинга мыши в browse просихдит задвоение , затроение записей. Попытка поставить rerecord по таблице на событии cmPositionChanged помогает, но замедляет систему в разы.
Господа, что посоветуете?

Re: проблема скроллинга при использовании Condition c Маркер

Добавлено: 28 мар 2011, 17:29
edward_K
1. заменить condition на bounds c жесткой подцепкой по временой табле
2. rereadrecord круто, но тут хватит rescanpanel и лучше в cmIdle
3. и пишите в ТП с отправкой своего фейса - я знаю еще пару мест стандартных где повторяется также. Мож решат. Для себя я те места починил именно так.

Re: проблема скроллинга при использовании Condition c Маркер

Добавлено: 28 мар 2011, 17:35
galover
Ага, нарывался на что-то подобное. Condition вообще странно иногда работает. Попробуй переписать вьюху:

Код: Выделить всё

create view from table where (( root == table.nRec and ((not _isFilter) or FoundMarker(mMarkDoc, table.nRec)) ));
Ну и наложением condition рули по _isFilter.

Re: проблема скроллинга при использовании Condition c Маркер

Добавлено: 28 мар 2011, 18:56
beatlov
Дейстивтельно на примере c _filter все работает замечательно, если не с condition работать, а напряму в запрос. ТОлько немного притормаживает .. совсем немного, видимо из-за того что записей в спецификации больше 1000 и в интерфейсе перемещать тяжеловато.
По поводу cmIdle и Rescan- не помогло;(
С Временной таблицой помогло.. но если выборка больше 4 записей.. перемещение между записями идет рывками, притормаживанием через каждые 4 записи - это нормально? или я что=то не так делаю?

Re: проблема скроллинга при использовании Condition c Маркер

Добавлено: 28 мар 2011, 20:39
edward_K
самый надежный вариант, который работает в кадрах и в зарплате, сделать главной временную таблу, а к ней подключить нужную.
Тогда точно дергаться не будет, но потеряете время на ее заполнении и кнопка обновить работать не будет. Но зато можно играться с сортировкой по колонкам.
Когда временная идет дочерней в ней должно быть только одно поле - nrec и подцеплять ее только к главной таблице фейса - все остальное будет приводить к рывкам.
Condition старайтесь избегать в принципе - лучше bounds со сложными условиями.

Re: проблема скроллинга при использовании Condition c Маркер

Добавлено: 28 мар 2011, 22:58
Den
beatlov писал(а):.. но если выборка больше 4 записей.. перемещение между записями идет рывками, притормаживанием через каждые 4 записи - это нормально? или я что=то не так делаю?
Вряд ли ты тут что то придумаешь - будет жесткая подцепка на корневую таблицу формата при большем объеме данных на некий фильтр (неважно на маркер, временную таблицу) то будет эффект рывков и скакания наблюдаться. Если фейс свой, а не стандартный, то можно попробовать работать через времянку : при наложении n-фильтров закидываешь записи в нее и активизируешь формат переключаемый в качестве корневой таблицы формата с этой времянкой. Снимаешь фильтры - отображаешь формат с физической таблицей. Придется, конечно, ЛОТ нарисовать поболее и с баундсами играться, работая с ними после изменения любого из фильтров , но зато юзвери скажут спасибо.

Re: проблема скроллинга при использовании Condition c Маркер

Добавлено: 31 мар 2011, 19:19
beatlov
Господа, спасибо за ответы! все переделал на bounds, поиграл с индексами - все вылечилось и не тормозит!