Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.477 c
15-1160556913
litt
2006-10-11 12:55
2006.10.29
where DPO in


1-1158359971
maxistent
2006-09-16 02:39
2006.10.29
GetProcessMemoryInfo


3-1157081407
tolianb
2006-09-01 07:30
2006.10.29
Экспорт из данных из DBGrid в Excel


10-1124916616
Nick Denry
2005-08-25 00:50
2006.10.29
А как использовать события в COM?


2-1160399737
zorik
2006-10-09 17:15
2006.10.29
расширить функции TCanvas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский