-
TheEd (04.12.15 15:54) [0]Уважаемые мастера, глюк престраннейший обнаружился, может кто сталкивался:
имеем FIBPlus, Delphi7, EHLib, Firebird 2.0.
В компоненте TFibDataSet в SelectSQL пишуSELECT TT.*
FROM SomeTable TT
WHERE ADATE = :ADATE
ORDER BY TT.ADATE
соответственно привязываю через DataSource к TDBGridEh. Так вот, на форме есть календарь, и по клику делаем:SomeQuery.Close;
SomeQuery.ParamByName('ADATE').AsDate := Calendar1.Date;
SomeQuery.Open;
так вот, если то, что выделено жирным присутствует, то в момент выполнения подчёркнутого программа зацикливается внутриprocedure TCustomDBGridEh.WndProc(var Message: TMessage);
, причём для некоторых дат...
Если жирное убрать - всё ок!
Пока обнаружил проблемное место, голову сломал - хотелось бы до сути добраться (временно без сортировки обхожусь). -
попробуй
SomeQuery.ParamByName('ADATE').AsDateTime := Calendar1.Date;
не скажу за "фибы" и данную ситуацию но как-то была проблема с типом "дата" в базах. -
TheEd (05.12.15 09:05) [2]спасибо, не помогло...
малость правда ошибся - сортировка по другому полю, которое отсутствует в блоке условия отбора:ORDER BY TT.ATIME
но сути это не меняет. SomeTable - даже не вьюха - обычная таблица, ни джоинов, ничего хитрого... Данных немного в таблице. Сотни раз подобные таблицы создавал, и для визуализации данные компоненты использовал, и тут такой болт! -
А какие то индексы по ADate и/или ATime присутствуют? Что если попробовать их убрать/пересоздать?
-
TheEd (07.12.15 10:00) [4]Всем спасибо, разобрался, не то чтобы в сути, т.е. "почему именно когда сортировка по дате - тогда и глюк", но цепочка кода которая его организует вычислена. Пришлось копию проект кастрировать практически до пустой формы с парой таблиц и датасетов :))))
Там правда связка весьма некороткая срабатывала, но ларчик просто открывался - в датасете были люкап-поля, которые использовали датасет, который использовался где-то ещё и, видимо, во а время поиска по люкапу срабатывал afterscroll в другом месте. К слову сказать, глюк проявился, когда в обработчике onContainerDataSetEvent присутствует Application.ProcessMessages.