![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ADO, JRO, Access, DBGrid и вообще. [D6, Access]
0_archi_0 © (2006-10-12 18:11:00)Всем доброго вечера, есть вопросик.
Есть база данных на Aecess - AIDS.mdb (главная таблица, две связанные).
Схематично: ADOConnection1 -> PacientiADOTable -> PacientiDataSource -> PacientiDBGrid на главной форме.
Из меню главной формы вызывается следующая процедура:
procedure TMainForm.N9Click(Sender: TObject);
var ReplObject: Replica;
Provider, Src, Dst: String;
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;
//Данный кусок кода переносит изменения из базы AIDS1.mdb в базу AIDS.mdb - главную реплику. К нему вопросов нет
if DataModule1.PacientiADOTable.Modified then
DataModule1.PacientiADOTable.Post;
DataModule1.PacientiADOTable.Requery;
Application.Terminate;
//а вот здесь вопросы - после выполнения кода приложение не заканчивается, как висела форма так и висит?????????? и данные DBGride не обновляются.
end;
Может кто что подскажет?
Заранее благодарю.
0_archi_0 (2006-10-12 19:36:00) [1]Форма не реагирует не только на Application.Terminate, но и на весь комплекс:
Self.Close;
MainForm.Close;
Application.Terminate;
Но с этим я разобрался, просто добавил строку - ReplObject:=nil;
Хотя может красивее что-то есть.
А вот DBGrid обновляеся только после второго нажатия менюшки, как бы за одни раз бы?
ANB (2006-10-12 18:53:00) [2]
> А отчего форма не реагирует на Application.Terminate????
> ???????
Ээээ. Вообще то форма Close закрывается. Наверное, потому и не кусает . . . А в каком обработчике это все происходит ?
0_archi_0 (2006-10-12 18:45:00) [3]Первоначально ход мыслей был таков - жмется кнопка меню, происходит репликация, обновленные данные появляются там же где до этого были старые в DBGrid'e, которы на форме постоянно находится. Однако данные в DBDrid'e не обновляются, чтобы это произошло надо нажать еще раз меню.
А это не есть хорошо, поэтому решил просто закрыть форму, а когда открываешь снова программу данные обновлены и их видно - как альтернативный (другого выхода не знаю) выход.
А отчего форма не реагирует на Application.Terminate???????????
ANB (2006-10-12 18:21:00) [4]А зачем обновлять грид, если собираешься закрыть приложение ?
> if DataModule1.PacientiADOTable.Modified then
> DataModule1.PacientiADOTable.Post;
Вот этот кусок вообще бессмысленен.