Текущий архив: 2006.08.13;
Скачать: CL | DM;
Вниз
фильтры и midas.dll Найти похожие ветки
← →
Torin (2006-06-08 11:09) [0]Уважаемые мастера!
Столкнулся с такой проблемой.
После открытия набора данных (informix, TClientDataSet) накладываю ОЧЕНЬ БОЛЬШОЙ ФИЛЬТР.
Возникает ошибка
"Access violation at adress xxx in module midas.dll. Read of address xxx".
На "небольших" фильтрах все отрабатывает ОК.
Подскажите, плиз, с чем это связано (ограничение по количеству символов на фильтры в midas.dll? Но у меня отрабатывали фильтры с length > 256) и как с этим бороться. Переоткрытие с другим запросом не проходит - база данных ОГРОМНАЯ и запрос выполняется от 2-х до 5 минут. А разные фильтры накладывать нужно несколько раз.
Замена midas.dll на версию от Delphi2006 результата не дала.
← →
Удалено модератором (2006-06-08 11:11) [1]Удалено модератором
← →
Sergey13 © (2006-06-08 11:14) [2]ИМХО.
С ОГРОМНЫМИ БД надо тщательнее работать с SQL и прорабатывать юзерский интерфейс, а не качать всю ОГРОМНУЮ на клиента для фильтрации. Может у тебя такой случай?
← →
Torin (2006-06-08 11:30) [3]К сожалению, на изменение логики работы приложения нету ни времени, ни человеко-ресурсов, ни желания руководства. Пока что нужно закончить то что есть :(
← →
ЮЮ © (2006-06-08 11:38) [4]
> Но у меня отрабатывали фильтры с length > 256) и как с этим
> бороться.
Может все-же ошибка в фильтре, а не ограничение по длине, коль уж отрабатывали фильтры с length > 256
← →
Torin (2006-06-08 12:04) [5]Фильтр перекопал. Там все ОК. К примеру, один из фильтров:
(NOT (SOTRUDNID IN (ДОФИГА ID через запятую))) AND (BANKNUMRAXYNOK="")
Уменьшаю выражение IN (Кооонкретно так уменьшаю) - все работает.
И нету привязки глюка к определенному ID - кровью проверено!
← →
Desdechado © (2006-06-08 12:26) [6]попробуй разбить один IN(...) на несколько IN(..)
← →
Torin (2006-06-08 12:37) [7]Киаим образом раздить на несколько IN?
Имеется в виду SOTRUDNID IN (1, 2, 3, 4, 5) AND SOTRUDNID IN (6, 7, 8, 9, 0)?
← →
Desdechado © (2006-06-08 12:39) [8]а каким еще его можно разбить?
← →
Sergey13 © (2006-06-08 12:45) [9]Вместо AND OR
← →
ЮЮ © (2006-06-08 12:47) [10]тогда уж
(SOTRUDNID IN (1, 2, 3, 4, 5)) OR (SOTRUDNID IN (6, 7, 8, 9, 0))
что для фильтра не подарок
>Уменьшаю выражение IN (Кооонкретно так уменьшаю) - все работает.
Очевидно, что набор кодов возникает на клиенте. Не проше в клиентском наборе заиметь поле типа IsIncluded и ставить 1 или 0, тогда и фильтр сократится до
AND (IsIncluded = 1)
или использовать OnFilterRecord где сравнивать запись со "списоком помеченных"
← →
Torin (2006-06-08 15:11) [11]Разбил IN на несколько "кусков" - все заработало.
Пасибки! B)
Получается, что лажа была не в весе ВСЕГО фильтра а в к-ве items в выражении IN...
← →
Sergey13 © (2006-06-08 15:18) [12]2[11] Torin © (08.06.06 15:11)
Сколько же их у тебя было то?!!! 8-)
← →
Torin (2006-06-08 16:41) [13]А было их-то у меня... 48 с чем-то тысяч символов (в Far)...
← →
Sergey13 © (2006-06-08 16:49) [14]2 [13] Torin © (08.06.06 16:41)
Абалдеть!!! 8-)))))))))))))))))))))))))))))))))))))
← →
Johnmen © (2006-06-08 17:01) [15]Фтопку такие программы, адназначна!
Афтара расстрелять.
← →
atruhin © (2006-06-08 17:10) [16]
> 48 с чем-то тысяч символов (в Far)...
Уметь надо. А то тут все SQL, SQL. Фильтры - это круто! :)
Страницы: 1 вся ветка
Текущий архив: 2006.08.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.033 c