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

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

Как обработать в приложении разрыв connect-a [D7, MySQL, Firebird 1.5.0]


Страницы:   1 2

Анна ©   (2007-04-12 13:56:00) 

Приложение работает постоянно, по таймеру, выбирая вновь поступившие записи с удаленного сервера MySQL и вставляет их в таблицу локального сервера с FB 1.5.0
Уважаемые программисты, дайте совет, как не прерывая работу программы, выдать сообщение на форме c информацией об отсутствии соединения ( например на label), и только потом по таймеру проверять восстановлено ли соединение. Как погасить собщение WIN об отсутствии коннекта?
Для MySQL  пользуюсь компанентами TMySQLServer и TMySQLQuery. Для FB - DBExpress.


Анна   (2007-04-16 13:51:00) [1]


> Jan1   (16.04.07 13:40) [28]

Спасибо! Соединение есть.


Johnmen   (2007-04-16 13:41:00) [2]

Кто не находит? И должен ли "он" вообще что-то искать?
:))


Jan1   (2007-04-16 13:40:00) [3]

а так?

try
MySQLServer1.Close;
MySQLServer1.Open;
showmessage('Соединение есть');
Ins_values;     // в этой процедуре инсерт
end;
except
showmessage('Соединения нет');
exit;
end;


Анна   (2007-04-16 13:34:00) [4]


> Johnmen ©   (15.04.07 15:41) [26]

Прочитала про if и try ..
Сделала:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
try
MySQLServer1.Open;
showmessage('Соединение есть');
Ins_values;     // в этой процедуре инсерт
end;
except
showmessage('Соединения нет');
exit;
end;

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


Johnmen   (2007-04-15 15:41:00) [5]


> if MySQLServer1.Connected=true then  begin

И это чушь, если почитать про ifи try.


Плохиш   (2007-04-15 04:32:00) [6]


> except
> exit;

Вот между этими строками надо вставить код для обработки ситуации - "о, блин, а коннекта всё нэма 8-O ждём дальше"


Анна   (2007-04-15 01:12:00) [7]

Увжаемые знатоки!
Сообщение от отсутствии коннекта получается, как я писала в 20.
Но вот как проверить восстановление сети, опять не могу сообразить. Наверное это сложнее...
Делаю так ( на событие второго таймера, с большим интервалом, чем первый таймер) но ничего не происходит, данные не добавляются...  :
procedure TForm1.Timer2Timer(Sender: TObject);
begin
try
MySQLServer1.Open;
if MySQLServer1.Connected=true then  begin
procedure; //  в этой процедуре инсерт
end;
except
exit;
end;

Помогите, пожалуйста.


Jan1   (2007-04-12 17:56:00) [8]


> У меня в Exception будет сообщение WIN об отсутствии коннекта?

Анна, пишите плиз понятно для чебурашек.


Анна   (2007-04-12 17:06:00) [9]


> У меня в Exception будет сообщение WIN об отсутствии коннекта?

Попробовала - есть сообщение.


Val   (2007-04-12 17:05:00) [10]

а вам проверить не на чем? последние вопросы об этом говорят...
p.s. обратите внимание на использование параметров в тексте запроса.


Анна   (2007-04-12 16:58:00) [11]


> Johnmen ©   (12.04.07 16:43) [19]

Хорошо, а если я сделаю так:
try
with MySQLQuery1 do  begin
  Close;
  SQL.Clear;
  SQL.Add('select  pole1,pole2....');
  SQL.Add('from tabl');
  SQL.Add('where pole1>'+inttostr(max_id));
   open; first;
 end;
except
on E:Exception do labError.Caption := E.Message;
end;
У меня в Exception будет сообщение WIN об отсутствии коннекта?


Johnmen   (2007-04-12 16:43:00) [12]

Не следует каждую минуту делать коннект-дисконнект.
Надо просто проверять, выполнился ли запрос...


Анна   (2007-04-12 16:08:00) [13]

Я написала:
try
MуSQLServer1.Connected:=true;
.....
.....
except
on E:Exception do labError.Caption := E.Message;
end;
Работает.

Пожалуйста, ответьте еще, проверка на Connected:=true - будет каждую минуту идти, сильно будет тормозить по времени?


Анна   (2007-04-12 15:20:00) [14]


> Плохиш ©   (12.04.07 15:18) [16]

Все. Спасибо.


Плохиш   (2007-04-12 15:18:00) [15]


> Анна   (12.04.07 15:14) [15]
>
> > Плохиш ©   (12.04.07 15:10) [14]
>
> А вот "labError" надо где описывать?

см.

> Анна   (12.04.07 13:56)  
> Уважаемые программисты, дайте совет, как не прерывая работу
> программы, выдать сообщение на форме c информацией об отсутствии
> соединения ( например на label),


Анна   (2007-04-12 15:14:00) [16]


> Плохиш ©   (12.04.07 15:10) [14]

А вот "labError" надо где описывать?


Плохиш   (2007-04-12 15:10:00) [17]


> Анна   (12.04.07 15:06) [12]
> А как в exception записать в переменную сообщение WIN чтобы
> программа не останавливалась по сообщению WIN?

Aaaa, так вот в чём проблема :-)) На держи

 except
   on E:Exception do labError.Caption := E.Message;
 end;


Jan1   (2007-04-12 15:08:00) [18]


> А как в exception записать в переменную сообщение WIN чтобы
> программа не останавливалась по сообщению WIN?

моя твоя не понимать :)


Анна   (2007-04-12 15:06:00) [19]

А как в exception записать в переменную сообщение WIN чтобы программа не останавливалась по сообщению WIN?


Jan1   (2007-04-12 15:02:00) [20]


> Как то можно тоже через trу...exception ?

да, если ексепшена нет - связь есть, если есть переключаемся в другой режим.


Страницы:   1 2

Наверх

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