Доброго времени суток, всем!
Возникла такая проблема. Помогите разобраться.
Есть 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)) Помогите пожалуйста.