|
#1
|
|||
|
|||
Вопрос с 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
|
|||
|
|||
Или может это у ранних версий EhLib'а наблюдалось?
|