Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2010, 17:53   #1
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию Как определить потерю связи?

Всем доброго вечера. Как определить потерю связи с БД? Попробовал код
Код:
procedure TDataModule1.ADOConnection1ExecuteComplete(
  Connection: TADOConnection; RecordsAffected: Integer; const Error: Error;
  var EventStatus: TEventStatus; const Command: _Command;
  const Recordset: _Recordset);
begin
if EventStatus=esErrorsOccured
   then begin
        try
        while ADOConnection1.DataSetCount>0 do
          ADOConnection1.DataSets[0].Connection:=nil;
        ADOConnection1.Close;
        showmessage('Ïîêà!');
        Form1.Close;
        finally
        end;
        end;
end;
Но эта процедура вызывается только при старте соединения.
Сергей089 вне форума Ответить с цитированием
Старый 12.07.2010, 18:05   #2
golopjatov
Пользователь
 
Регистрация: 09.07.2010
Сообщений: 13
По умолчанию

Может запускать процедуру по таймеру (с выдачей сообщения о потере связи)... не знаю. просто предложение. Или делать проверку состояния подключения перед выполнением к примеру добавления, изменения и т.п. действий?..
golopjatov вне форума Ответить с цитированием
Старый 12.07.2010, 22:45   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
try
 adoquwry.sql.text:='select .... ';
 adoquery.open;

except

 end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 13.07.2010, 06:01   #4
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Ну а может так...
Код:
 if ADOConnection.Connected = True Then
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 13.07.2010, 08:21   #5
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
Сообщение от rdama Посмотреть сообщение
Ну а может так...
Код:
 if ADOConnection.Connected = True Then
Не получилось. Connected остается true.
Сергей089 вне форума Ответить с цитированием
Старый 13.07.2010, 08:27   #6
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
Сообщение от golopjatov Посмотреть сообщение
Или делать проверку состояния подключения перед выполнением к примеру добавления, изменения и т.п. действий?..
А есть ли такая процедура, которая обязятельно вызывается для всех этих действий?
Сергей089 вне форума Ответить с цитированием
Старый 13.07.2010, 08:46   #7
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Код:
  if ADOConnection1.State = [stClosed] then
    ShowMessage('Close');
  if ADOConnection1.State = [stOpen] then
    ShowMessage('Open');
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 13.07.2010, 08:48   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как определить потерю связи с БД?
Один мой знакомый говаривал что можно банально перед всеми операциями выполнять запрос типа select 1 или select 1 from dual (для Оракла), таким образом БД не напрягается, и проверяется готовность БД
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 09:29   #9
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
перед всеми операциями выполнять запрос
Ну так не интересно искать в коде все операции. А можно ли эту проверку где-нибудь в одном месте поставить для всех сразу? И почему не вызывается метод TDataModule1.ADOConnection1ExecuteC omplete после ADOTable1.Post;?
Сергей089 вне форума Ответить с цитированием
Старый 13.07.2010, 09:48   #10
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

Попробуй через ADOConnection1.State. Предыдущий мой пост.
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как указать на связи таблиц malayka БД в Delphi 4 22.04.2010 17:35
Как разорвать связи? valerij Microsoft Office Excel 5 18.05.2009 23:36
Как обработать разрыв связи ADO с БД slips БД в Delphi 3 18.11.2008 16:53
Как защитить от спама ящик? Форма обратной связи osp HTML и CSS 2 17.10.2008 19:35
какое событие отвечает за получени/потерю фокуса у формы? Paul Hindenburg Общие вопросы Delphi 4 10.06.2008 14:47