![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Востановление работы после обрава соединения(IBX) [D5, firebird 1]
Stanly © (2003-07-18 10:40:00)Кто-нибуть сталкивался с такой проблемой, что при первом вызове IBDataset.Open() после подсоединения к новой базе после обрыва соединения со старой, IBDataset ничего не возвращает. После повторного вызова IBDataset.Open() все нормально все поля заполнены.
Johnmen (2003-07-18 13:40:00) [1]В BeforeConnect для IBDatabase пропиши IBDataSet.Close
Stanly (2003-07-18 13:30:00) [2]Когда про вызовы писал перепутал IBDatabase c IBDataset, мда неувязочка вышла. Так что методы Close и Open я для IBDataset вызываю :-) А IBDatabase к этому моменту уже подключен к резервной базе.
Johnmen (2003-07-18 12:07:00) [3]>..., он при первом вызове IBDatabase.Open() компонент ничего невозвращает,...
А почему он должен что-то возвращать, если неактивен ?
Или же он у тебя активизируется после установки соединения ?
Смотри, как у тебя прописаны события Open, Close для IBDatabase...
Stanly (2003-07-18 11:36:00) [4]Есть программа, которая держит открытым соединение с базой, т.е. что читает или пишит в нее. Может получиться так что сервер может отвалиться от сети. При этом программа принудительно закрывает отвалившееся соединение так IBDatabase.ForceClose();
Прибивает все транзакции. Далее прога коннектитса к резервной базе, с помощью того же IBDatabase. Проблема в том что после такого востановления IBDataset востанавливается как-то не правильно, он при первом вызове IBDatabase.Open() компонент ничего невозвращает, это хорошо видно по пустому DBGrid. но при тутже повторном вызове, т.е. IBDatabase.Close(); IBDatabase.Open;
DBGrid заполняется.
Как победить эту ошибку или в какую сторону копать?
Johnmen (2003-07-18 11:22:00) [5]Теперь медленно и конкретно...