Показать сообщение отдельно
  #1  
Старый 28.05.2013, 17:29
listerine listerine вне форума
Прохожий
 
Регистрация: 20.03.2013
Сообщения: 41
Версия Delphi: Delphi XE2
Репутация: выкл
Печаль Обновление ADOTable

Всем привет!
Начну с того что не один форм/статью я прочитал по этой проблеме, решения есть, но они без толковые. В чем суть. Имеются две копии программы (на двух разных компьютерах), обе работают с БД, которая просто лежит в общей папке. И при изменении какой либо таблицы, программа посылает сообщение по локальной сети, что собственно некая таблица изменилась необходимо обновить. И все вроде бы ничего, но сообщение посылается мгновенно, а обновляется не совсем. Если после приема сообщения не выждать 3-4 секунды данные не обновиться вообще. Использованные компоненты ADOconnect, ADOTable, DataSourse, DBgridEh. База данных Access.
Обновлять пытался так:

Код:
   form1.ADOTable.Active:=false;
   form1.ADOTable.Active:=true;
   form1.DataSource1.DataSet.Refresh;
   form1.DataSource1.Enabled:=false;
   form1.DataSource1.Enabled:=true;
   form1.ADOTable.Refresh;
   form1.DBGridEh1.Refresh;

Этим кодом который нашел в интернете:

Код:
procedure ReOpenDataSet(DataSet: TDataSet; StayActiveRecord: boolean = true);
begin
   with DataSet do
      begin
        if StayActiveRecord then
            Tag := Fields[0].AsInteger;  
        DisableControls;               
        Close;
        Open;
        if StayActiveRecord then
            Locate(Fields[0].FieldName,Tag,[]);
        EnableControls;            
      end;
end;

Но результата к сожаление нет . Обновляет, но так же 3-4 секунды - это долго. Мне посоветовали использовать компонент ADOQeury мол с ним таких проблем нету, да я сам где читал, что кому то это помогло. Хорошо что не весь проект переписал, а только к одной таблице его поставил, потому что результат оказался точно таким же. Пробовал я запускать обе программы на одном ПК, да бы исключить проблему с сетью. Исключил.
Что собственно хотелось бы узнать, как грамотно/правильно обновить данные. Хотя бы с задержкой 1-1,5 сек. Или может дело еще в чем? Надеюсь на вашу помощь. Спасибо.

И еще кое что, если может у кого есть хорошие статьи или книги по этой проблеме, ткните. Просто хотелось бы знать, почему вообще так происходит и разобрать по поподробнее.
Ответить с цитированием