Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизНе работает код (БД, репликация). Приложение не закрывается Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c