Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.09.2009, 13:40
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию Вопрос с DBGridEh

Доброго времени суток, всем!

Возникла такая проблема. Помогите разобраться.
Есть DBGridEh (EhLib-овский DBGrid) связанный с ClientDataSet.
Данные в CDS фильтруются по времени (есть такое поле у него). Дак вот, по запросу подгружаются ещё данные и их надо поместить в тот же CDS, но перед этим проверить есть ли такая запись в этой БД. Для этого я отключаю фильтрацию , проверяю каждую полученную запись и снова включаю фильтрацию. Дак вот при таких запросах в основном работает всё нормально, но бывает случается что DBGridEh виснет и вся программа тоже зависает. Проявляется это так что по таблице не возможно перемещаться, все данные отображаются в одной строке (ну или что то в этом роде). Да и ещё, данные отображаемые в виснущем гриде связаны с детэйл CDS, который в свою очередб связан с мастер CDS по полю. Т.е. таблицы две: cdsID(мастер) и cdsData(детэйл). Помогите разобраться, мой ли это косяк или это глюк EhLiba и стоит искать другой компонент. Вот код:
Код:
   
            cdsData.Filtered := false;
            cdsData.DisableControls;             
            for i := кол-во - 1 downto 0 do begin
                cdsID.Locate('FID', 'нужное мастер поле', []);
                cdsData.Last;
                for j := кол-во записей принятых - 1 downto 0 do begin
                    .....
                    RecieveDT := время в полученной записи
                    IsRecord := false;
                    if cdsData.Locate('FDateTime',RecieveDT,[]) then IsRecord := true; //проверяем на наличие записи с таким временем в нашей таблице
                    if IsRecord then continue;

                    cdsData.Append;
                    //заполняем все поля
                end;

                cdsData.SaveToFile;

            end; 

            cdsData.EnableControls;
            cdsData.Filtered := true;

может где последовательность просто не правильная (я имею ввиду Filtered(false) - DisableControls - EnableControls - Filtered(true)) Помогите пожалуйста.
Ответить с цитированием
  #2  
Старый 05.09.2009, 06:59
Alex_S_S Alex_S_S вне форума
Прохожий
 
Регистрация: 07.05.2009
Сообщения: 41
Репутация: 10
По умолчанию

Или может это у ранних версий EhLib'а наблюдалось?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter