![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как восстановить утерянный 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, и при возникновении указанной ошибки коннектиться заново.