Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;

Вот этот кусок вообще бессмысленен.


Наверх

Титульная страница Поиск, карта сайта Написать письмо