Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

Не работает код (БД, репликация). Приложение не закрывается   Найти похожие ветки 

 
0_archi_0   (2006-10-12 14:26) [0]

Отчего не происходит выход из пиложения, не говоря уже о том, что данные Grid"е обновляются при нескольких вызовах подряд. Спасибо.
begin
ReplObject:= CoReplica.Create;
Provider:= "Provider=Microsoft.Jet.OLEDB.4.0;";
Src:= Provider+"Data Source = "+"AIDS.mdb";
Dst:= "AIDS1.mdb";
ReplObject.Set_ActiveConnection(Src);
try
 ReplObject.Synchronize(Dst, jrSyncTypeImport, jrSyncModeDirect);
except
 on E: Exception do
  ShowMessage(e.message);
end;
if DataModule1.PacientiADOTable.Modified then
DataModule1.PacientiADOTable.Post;
DataModule1.PacientiADOTable.Close;
DataModule1.PacientiADOTable.Open;
DataModule1.PacientiADOTable.Refresh;
Self.Close;
MainForm.Close;
Application.Terminate;
end;


 
MsGuns ©   (2006-10-12 14:49) [1]

Бред сивой кобылы потому что


 
0_archi_0   (2006-10-12 15:00) [2]

Наверное надо уточнить, чтобы не было таких ответов.
Данный кусок кода из главного меню программы. Этот кусок выполняет односторонюю репликацию базы Access, хотелось бы чтобы после этого закрывалось окно программы и приложение завершалось. Сам код репликации и репликация выполняется без ошибок. Но программа не закрывается, хотя в отладчике при пошаговом выполнении программа завершается.
А завершить надо для того, чтобы при повторном ее запуске в DBGride увидеть обновленные данные, другого выхода для обновления данных в DBGride я не нашел. Перепробовал следующее:
// DataModule1.ADOConnection1.Connected := False;
// DataModule1.ADOConnection1.Connected := True;
// datamodule1.PacientiADOTable.Active := false;
// datamodule1.PacientiADOTable.Active := true;

// DataModule1.PacientiADOTable.Refresh;
// DataModule1.PacientiDataSource.Enabled := false;
//DataModule1.PacientiDataSource.Enabled := true;
// PacientiDBGrid.DataSource:= nil;
// PacientiDBGrid.DataSource:= DataModule1.PacientiDataSource;
//DataModule1.VtorZabolADOTable.Refresh;
//DataModule1.SoputZabolADOTable.Refresh;
//DataModule1.PacientiDataSource.
if DataModule1.PacientiADOTable.Modified then
DataModule1.PacientiADOTable.Post;
DataModule1.PacientiADOTable.Close;
DataModule1.PacientiADOTable.Open;
DataModule1.PacientiADOTable.Refresh;
// MainForm.Visible := false;
// MainForm.Visible := true;


 
MsGuns ©   (2006-10-12 15:13) [3]

>
try
ReplObject.Synchronize(Dst, jrSyncTypeImport, jrSyncModeDirect);
except
on E: Exception do
 ShowMessage(e.message);
end;
if DataModule1.PacientiADOTable.Modified then
DataModule1.PacientiADOTable.Post;


Каким боком выполненая, очевидно, на сервере таинственным ReplObject репликация касается клиентского объекта PacientiADOTable ? А если все же касается, то почему сначала изменения на сервере (репликация), а потом на клиенте (Post) ? И еще: выбор из всего богатства ADO компоненты ADOTable обусловлен жестким условием ОБСЕ ?
ЗЫ. На всякий пожарный, поясните, что Вы понимаете под словом "репликация".

>
DataModule1.PacientiADOTable.Close;
DataModule1.PacientiADOTable.Open;


Про метод ReQuery не слышали ?

>
DataModule1.PacientiADOTable.Refresh;

"В огороде бузина, в Киеве дядька"

>Self.Close;
MainForm.Close;
Application.Terminate;


Первый оператор закрывает форму-владельца всего этого чуда. Ладно. А зачем еще и Главную. Уже криминал.
Но вершина - посдледний оператор. Это что, типа контрольный выстрел в голову ?

>end;

Единственная правильная строка кода. Действительно КОНЕЦ. Причем ПОЛНЫЙ.


 
0_archi_0   (2006-10-12 15:33) [4]

Есть таблица в составе базы Access, она называется Pacienti, связь такая - ADOConnection1-PacientiADOTable-PacientiDataSource-PacientiDBGrid. ADOConnection1 связан с базой данных. При репликации (в данном случае односторонней синхронизации) естественно меняется содержимое (происходит дополнение, изменение ранее занесенных записей в главной реплике, если они менялись во вторичной реплике) PacientiADOTable-PacientiDataSource-PacientiDBGrid. В итоге хотелось бы видеть новые и измененные данные в PacientiDBGrid. Однако их сразу почему-то не видно в Gride. Поэтому и все вышеперечисленно (смотри за // ...).
Метод ReQuery так же как и все которое за // не обновляет тут же данные в DBGrid"е.
И все-таки почему при выполении кода не закрывается приложение. Хоть одно Close хоть в комплекте.


 
Desdechado ©   (2006-10-12 15:34) [5]

не понимаю, каким боком грид пришпилен к репликации...
это как от газосварщика потребовать бетон мешать


 
MsGuns ©   (2006-10-12 15:39) [6]

>Метод ReQuery так же как и все которое за // не обновляет тут же данные в DBGrid"е.

Репликация и извлечение данных на клиент (TADOTable) выполняются в рамках одного соединения (TADOConnection) ?

>И все-таки почему при выполении кода не закрывается приложение. Хоть одно Close хоть в комплекте.

Ошибка в 17-й строке.
Обработчики OnCloseQuery/OnClose в любой из прикрываемых форм имеются ?


 
0_archi_0   (2006-10-12 15:39) [7]

не понимаю, каким боком грид пришпилен к репликации...
это как от газосварщика потребовать бетон мешать
>
В гриде отоброжается таблица, котороя меняется в результате репликации.


 
0_archi_0   (2006-10-12 15:50) [8]

Репликация и извлечение данных на клиент (TADOTable) выполняются в рамках одного соединения (TADOConnection).
Обработчиков OnCloseQuery/OnClose нигде нет. Форма одна - главная.
Что не так в 17 строке?


 
MsGuns ©   (2006-10-12 15:59) [9]

Мессир соизволит все же приотрыть завесу над таинственным CoReplica ?

Иначе дальнейший разговор будет напоминать визит больного геморроем к стоматологу.


 
0_archi_0   (2006-10-12 16:12) [10]

Есть такая библиотека расширения ADO - Microsoft Jet and Replication Objects (JRO). Это оттуда.
Код репликации скопирован из книги А.Сорокина "Delphi - разработка баз данных" и он работает - базы реплицируются. Вопрос вообще-то в другом - какого форма не закрывается после выполнения данного кода, и какого не меняеся содержимое DBGridg. Либо лыжи не едут либо я ... .


 
MsGuns ©   (2006-10-12 16:18) [11]

>Код репликации скопирован из книги А.Сорокина "Delphi - разработка баз данных"

"Ну тогда Вам к врачу" ;)


 
0_archi_0   (2006-10-12 16:24) [12]

В коде изменены строковые пременны соответственно с потребностью.
А Вы, уважаемый MsGuns, по ходу, такой код даже и в книжке не видали.
И не одного вразумительного ответа на мои вопросы.
Прискорбно.
Хотя для таких специалистов как Вы, MsGuns, как мне кажется вопросы простые.
Если можете ответить - ответьте по существу, нет так и напишите "не знаю".
Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2006.10.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
15-1160105487
MBo
2006-10-06 07:31
2006.10.29
О Delphi 2007 aka Highlander


15-1160119266
Ломброзо
2006-10-06 11:21
2006.10.29
Intranet-Web и документы Office


11-1128235367
Sniper17
2005-10-02 10:42
2006.10.29
А если перейти на SVN?


2-1160638881
Volodya_
2006-10-12 11:41
2006.10.29
TOleContainer


15-1160556913
litt
2006-10-11 12:55
2006.10.29
where DPO in