Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
8-1139987525
Fly
2006-02-15 10:12
2006.08.13
Как Сохранить в PNG


2-1153923540
Dmitry_177
2006-07-26 18:19
2006.08.13
Клавиатурный шпион


1-1151372156
parovoZZ
2006-06-27 05:35
2006.08.13
Экспорт / импорт (dll) функций из класса


3-1149677605
Tornado
2006-06-07 14:53
2006.08.13
Вставить запись из Акцесс в MS SQL (продолжение :)


15-1152966794
Кручен-Верчен
2006-07-15 16:33
2006.08.13
Переустановка WINDOWS.




   Наверх