Конференция "Базы" » Глюк или не глюк?
 
  • 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);

    , причём для некоторых дат...
    Если жирное убрать - всё ок!
    Пока обнаружил проблемное место, голову сломал - хотелось бы до сути добраться (временно без сортировки обхожусь).
  • sniknik © (04.12.15 20:13) [1]
    попробуй
    SomeQuery.ParamByName('ADATE').AsDateTime := Calendar1.Date;
    не скажу за "фибы" и данную ситуацию но как-то была проблема с типом "дата" в базах.
  • TheEd (05.12.15 09:05) [2]
    спасибо, не помогло...
    малость правда ошибся - сортировка по другому полю, которое отсутствует в блоке условия отбора:
    ORDER BY TT.ATIME
    но сути это не меняет. SomeTable - даже не вьюха - обычная таблица, ни джоинов, ничего хитрого... Данных немного в таблице. Сотни раз подобные таблицы создавал, и для визуализации данные компоненты использовал, и тут такой болт!
  • Sergey13 © (07.12.15 08:30) [3]
    А какие то индексы по ADate и/или ATime присутствуют? Что если попробовать их убрать/пересоздать?
  • TheEd (07.12.15 10:00) [4]
    Всем спасибо, разобрался, не то чтобы в сути, т.е. "почему именно когда сортировка по дате - тогда и глюк", но цепочка кода которая его организует вычислена. Пришлось копию проект кастрировать практически до пустой формы с парой таблиц и датасетов :))))
     Там правда связка весьма некороткая срабатывала, но ларчик просто открывался - в датасете были люкап-поля, которые использовали датасет, который использовался где-то ещё и, видимо, во а время поиска по люкапу срабатывал afterscroll в другом месте. К слову сказать, глюк проявился, когда в обработчике onContainerDataSetEvent присутствует  Application.ProcessMessages.
 
Конференция "Базы" » Глюк или не глюк?
Есть новые Нет новых   [134427   +34][b:0][p:0.001]