Текущий архив: 2003.11.13;
Скачать: CL | DM;
Вниз
Как восстановить утерянный Connect Найти похожие ветки
← →
Andrushk (2003-10-07 18:21) [0]У пользователей плохая связь,переодически обрывается.Ситуация такая,пользователь залогинился,поработал,потом минут десять курит,и когда снова хочет продолжить работу программа выдает: not connected to Oracle. Хотелось бы сделать так: если связь порвалась, то при попытке пользователя сделать select, update ... выдавалось сообщение: "типа были проблемы со связью,но я сейчас законнекчусь, подожди 5 сек и все будет ок",и пыталась бы закконектиться.
Может кто так делал? Я ни у SQLConnection, ни у TSQLDataSet, ни у провайдера не нашел события на которое можно было бы повесить этот переконнект.
Помогите плиз, пожалейте пользователей:-)
← →
Sandman25 (2003-10-07 18:23) [1]Все операции производить в try except, и при возникновении указанной ошибки коннектиться заново.
← →
Andrushk (2003-10-07 18:28) [2]Ну а всетаки, при попытке сделать скажем select при отсутствии связи возникает ошибка, неужели у цепочки компонентов Connection->DataSet->Provider->ClientDataSet не срабатывает какое-нибудь событие???
Мне try...except не очень нравиться, он в данном случае что-то фигово работает
← →
Andrushk (2003-10-07 18:31) [3]ну если просто Close/Open барть в try...except то конечно работает...но вот почему-то когда ошибка на ApplyUpdates происходит try...except вообще пролетает как ничего не было
← →
Sandman25 (2003-10-07 18:32) [4]Посмотрите TConnectChangeEvent, только что нашел. Даже не знаю, у кого он есть.
← →
Sandman25 (2003-10-07 18:34) [5]Посмотрите еще AfterDisconnect.
3] Andrushk (07.10.03 18:31)
Наверное, там вызывается ShowMessage без генерации исключения.
← →
Andrushk (2003-10-07 18:34) [6]и потом, у меня в приложении столько действий, причем прописанных в куче разных форм - это рихнешься везде try...except ставить, а вот датасеты все в датамодуле и их относительно немного, да и один обработчик им можно повесить...как бы всетаки их событиями обойтись?
← →
Sandman25 (2003-10-07 18:39) [7]Напишите своего потомка TDataset, у которого перекройте ApplyUpdates.
← →
Andrushk (2003-10-07 18:46) [8]AfterDisconnect - не подходит я его (ну и Before) - первым делом попробовал...
Подождем...может еще кто идею подкинет
А TConnectChangeEvent - я посмотрю сейчас
← →
Andrushk (2003-10-08 09:00) [9]2 Sandman25
Мда,похоже ты единственный специалист в этой области:-)
← →
Sergey13 (2003-10-08 09:59) [10]2Andrushk (07.10.03 18:21)
>Помогите плиз, пожалейте пользователей:-)
На самом деле ты просишь пожалеть программиста, т.е. себя любимого. Единственно возможный правильный совет от Sandman25 © (07.10.03 18:23) [1] тебя не устроил, потому что
>это рихнешься везде try...except ставить
Чего же ты ждешь?
Ну запрашивай по таймеру каждые N секунд
select 1 from dual
например и обрабатывай исключение. Это хоть как то поможет. Хотя скорее всего спрячет проблему подальше, но не решит ее.
← →
Alexey Dubovsky (2003-10-08 16:35) [11]Вообщето проблема, как я понимаю, проблема не в плохой связи, а с тем, что человек попадает на конечный сервер Оракл через Фаервол. Если это так, то могу подсказать, как решается эта проблема.
← →
Arm79 (2003-10-08 17:51) [12]На форму ApplicationEvent и перехватывай ошибку в одном месте. Таж же и заново соединяйся.
← →
Виталий (2003-10-25 23:08) [13]Ну есть такое предложение по данной проблеме:
1. Создать стек состояний всех таблиц БД (Акт/Не акт)
2. Создать универсальную процедуру коннекта и активизации таблиц,
которая будет выполняться после обрыва.
← →
sniknik (2003-10-26 00:43) [14]еще одно предложение,
переделать все используя мидас, трехзвенку, там через TSimpleObjectBroker можно целый список серверов задать, нет коннекта к одному береш данные со следующего.
правда "себе любимому" придется поработать, ;о)) но пользователь выиграет.
Страницы: 1 вся ветка
Текущий архив: 2003.11.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.031 c