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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

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

Сообщение beatlov »

Добрый день!
После выполнения фильтра с помощью Condition по маркеру nrec ( condition fKat = FoundMarker(mMarkDoc, xxxx.ckatpodr ) при перемещении по отфильтрованным записям с помощью скроллинга мыши в browse просихдит задвоение , затроение записей. Попытка поставить rerecord по таблице на событии cmPositionChanged помогает, но замедляет систему в разы.
Господа, что посоветуете?
I just shot John Lennon
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

1. заменить condition на bounds c жесткой подцепкой по временой табле
2. rereadrecord круто, но тут хватит rescanpanel и лучше в cmIdle
3. и пишите в ТП с отправкой своего фейса - я знаю еще пару мест стандартных где повторяется также. Мож решат. Для себя я те места починил именно так.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

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

Сообщение galover »

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

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

create view from table where (( root == table.nRec and ((not _isFilter) or FoundMarker(mMarkDoc, table.nRec)) ));
Ну и наложением condition рули по _isFilter.
beatlov
Посетитель
Сообщения: 31
Зарегистрирован: 29 сен 2009, 13:29
Откуда: Ухта

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

Сообщение beatlov »

Дейстивтельно на примере c _filter все работает замечательно, если не с condition работать, а напряму в запрос. ТОлько немного притормаживает .. совсем немного, видимо из-за того что записей в спецификации больше 1000 и в интерфейсе перемещать тяжеловато.
По поводу cmIdle и Rescan- не помогло;(
С Временной таблицой помогло.. но если выборка больше 4 записей.. перемещение между записями идет рывками, притормаживанием через каждые 4 записи - это нормально? или я что=то не так делаю?
I just shot John Lennon
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

самый надежный вариант, который работает в кадрах и в зарплате, сделать главной временную таблу, а к ней подключить нужную.
Тогда точно дергаться не будет, но потеряете время на ее заполнении и кнопка обновить работать не будет. Но зато можно играться с сортировкой по колонкам.
Когда временная идет дочерней в ней должно быть только одно поле - nrec и подцеплять ее только к главной таблице фейса - все остальное будет приводить к рывкам.
Condition старайтесь избегать в принципе - лучше bounds со сложными условиями.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

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

Сообщение Den »

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

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

Сообщение beatlov »

Господа, спасибо за ответы! все переделал на bounds, поиграл с индексами - все вылечилось и не тормозит!
I just shot John Lennon
Ответить