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

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

Как восстановить утерянный Connect [D7]


Andrushk ©   (2003-10-07 18:21:00) 

У пользователей плохая связь,переодически обрывается.Ситуация такая,пользователь залогинился,поработал,потом минут десять курит,и когда снова хочет продолжить работу программа выдает: not connected to Oracle. Хотелось бы сделать так: если связь порвалась, то при попытке пользователя сделать select, update ... выдавалось сообщение: "типа были проблемы со связью,но я сейчас законнекчусь, подожди 5 сек и все будет ок",и пыталась бы закконектиться.
Может кто так делал? Я ни у SQLConnection, ни у TSQLDataSet, ни у провайдера не нашел события на которое можно было бы повесить этот переконнект.
Помогите плиз, пожалейте пользователей:-)


sniknik   (2003-10-26 00:43:00) [1]

еще одно предложение,
переделать все используя мидас, трехзвенку, там через TSimpleObjectBroker можно целый список серверов задать, нет коннекта к одному береш данные со следующего.

правда "себе любимому" придется поработать, ;о)) но пользователь выиграет.


Виталий   (2003-10-25 23:08:00) [2]

Ну есть такое предложение по данной проблеме:

1. Создать стек состояний всех таблиц БД (Акт/Не акт)
2. Создать универсальную процедуру коннекта и активизации таблиц,
которая будет выполняться после обрыва.


Arm79   (2003-10-08 17:51:00) [3]

На форму ApplicationEvent и перехватывай ошибку в одном месте. Таж же и заново соединяйся.


Alexey Dubovsky   (2003-10-08 16:35:00) [4]

Вообщето проблема, как я понимаю, проблема не в плохой связи, а с тем, что человек попадает на конечный сервер Оракл через Фаервол. Если это так, то могу подсказать, как решается эта проблема.


Sergey13   (2003-10-08 09:59:00) [5]

2Andrushk (07.10.03 18:21)
>Помогите плиз, пожалейте пользователей:-)
На самом деле ты просишь пожалеть программиста, т.е. себя любимого. Единственно возможный правильный совет от Sandman25 © (07.10.03 18:23) [1] тебя не устроил, потому что

>это рихнешься везде try...except ставить

Чего же ты ждешь?
Ну запрашивай по таймеру каждые N секунд
select 1 from dual
например и обрабатывай исключение. Это хоть как то поможет. Хотя скорее всего спрячет проблему подальше, но не решит ее.


Andrushk   (2003-10-08 09:00:00) [6]

2 Sandman25
Мда,похоже ты единственный специалист в этой области:-)


Andrushk   (2003-10-07 18:46:00) [7]

AfterDisconnect - не подходит я его (ну и Before) - первым делом попробовал...
Подождем...может еще кто идею подкинет
А TConnectChangeEvent - я посмотрю сейчас


Sandman25   (2003-10-07 18:39:00) [8]

Напишите своего потомка TDataset, у которого перекройте ApplyUpdates.


Sandman25   (2003-10-07 18:34:00) [9]

Посмотрите еще AfterDisconnect.

3] Andrushk (07.10.03 18:31)

Наверное, там вызывается ShowMessage без генерации исключения.


Andrushk   (2003-10-07 18:34:00) [10]

и потом, у меня в приложении столько действий, причем прописанных в куче разных форм - это рихнешься везде try...except ставить, а вот датасеты все в датамодуле и их относительно немного, да и один обработчик им можно повесить...как бы всетаки их событиями обойтись?


Sandman25   (2003-10-07 18:32:00) [11]

Посмотрите TConnectChangeEvent, только что нашел. Даже не знаю, у кого он есть.


Andrushk   (2003-10-07 18:31:00) [12]

ну если просто Close/Open барть в try...except то конечно работает...но вот почему-то когда ошибка на ApplyUpdates происходит try...except вообще пролетает как ничего не было


Andrushk   (2003-10-07 18:28:00) [13]

Ну а всетаки, при попытке сделать скажем select при отсутствии связи возникает ошибка, неужели у цепочки компонентов Connection->DataSet->Provider->ClientDataSet не срабатывает какое-нибудь событие???
Мне try...except не очень нравиться, он в данном случае что-то фигово работает


Sandman25   (2003-10-07 18:23:00) [14]

Все операции производить в try except, и при возникновении указанной ошибки коннектиться заново.


Наверх

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