Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.031 c
14-42075
alex134
2003-10-23 18:05
2003.11.13
спам


1-41640
Чайник Д
2003-10-25 23:06
2003.11.13
Как быстрее всего зделать скриншорт


1-41667
Raduga
2003-11-04 09:52
2003.11.13
Строковое представление адреса


1-41596
Денис М
2003-10-27 05:13
2003.11.13
ссылка на разные типы объектов в TTreeView


1-41579
McSimm2
2003-11-04 11:08
2003.11.13
Как нарисовать иконку в MenuItem