Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Вниз

Как обработать в приложении разрыв connect-a   Найти похожие ветки 

 
Анна   (2007-04-12 13:56) [0]

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


 
Jan1   (2007-04-12 14:02) [1]

если Вы уже сделали
> Приложение работает постоянно, по таймеру, выбирая вновь
> поступившие записи с удаленного сервера MySQL и вставляет
> их в таблицу локального сервера с FB 1.5.0

то посидеть чуть-чуть с хелпом и Вы доделаете то что хотите. Вам же полезнее будет.


 
Анна   (2007-04-12 14:06) [2]


> Jan1   (12.04.07 14:02) [1]

Да я уже посидела и с хелпом и с яндексом! Не могу сообразить, не хватает знаний. Я физик, запрограммировала из-за необходимости. Поэтому и прошу совета.


 
Плохиш ©   (2007-04-12 14:12) [3]

Предлагаю отказаться от постоянного соединения с бд:
1. Подключились
2. Передали данные
3. Отключились


 
Анна   (2007-04-12 14:31) [4]


> Плохиш ©   (12.04.07 14:12) [3]

НЕт, не могу. Приложение пишет по таймеру, через каждую минуту. Каждый раз подключаться и отключаться - слишком долго. Программа запускается утром и работает до конца раб дня (до 23=-00), без присмотра. И поэтому необходимо вывести информацию на форму об отсутствии коннекта и чтобы она продолжала крутиться по таймеру, но уже с другим интервалом ( напр 5 мин) и проверяла только соединение. И как только его обнаруживала - переходила на процедуру где select - insert.
можно так делать?


 
Jan1   (2007-04-12 14:32) [5]


> можно так делать?

можно :)
что Вы уже сделали?


 
Val ©   (2007-04-12 14:36) [6]

>слишком долго
по сравнению с выборкой/заливкой данных?
оберните выборку/заливку в try except и в последнем - все что хотите..


 
Sergey13 ©   (2007-04-12 14:45) [7]

http://ibase.ru/fibc/ibx_disc.htm
http://ibase.ru/devinfo/ibx_connect.txt


 
Анна   (2007-04-12 14:46) [8]


> Jan1   (12.04.07 14:32) [5]

Я сделала  только запись с MySQL на FB и запись текстового файла ( протокол работы, где
try
SQLQuery2.ExecSQL;
except
on E:Exception do begin
Writeln(txt_file,E.Message);
end;
end;
и записываю ошибки по Внешнему ключу, чтобы пропускать записи и не прерывать работу программы.
Работает нормально. Но бывают ситуации, когда обрывается связь. И как это обработать не могу сообразить. :(


 
Jan1   (2007-04-12 14:56) [9]


> Работает нормально. Но бывают ситуации, когда обрывается
> связь. И как это обработать не могу сообразить. :(

в чем проблема слать простенький запрос(скажем select NOW()) каждые 5 минут? если он даст сбой - проблема со связью...


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


> Jan1   (12.04.07 14:56) [9]

Хорошо. А как мне сообщение WIN, что нет связи с MySQL - сервером погасить? Как то можно тоже через trу...exception ?


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


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

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


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

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


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


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

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


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


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

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

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


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


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

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


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


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

см.

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


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


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

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


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

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

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


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

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


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


> 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 об отсутствии коннекта?


 
Val ©   (2007-04-12 17:05) [21]

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


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


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

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


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


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

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


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

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

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


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


> except
> exit;

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


 
Johnmen ©   (2007-04-15 15:41) [26]


> if MySQLServer1.Connected=true then  begin

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


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


> 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;

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


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

а так?

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


 
Johnmen ©   (2007-04-16 13:41) [29]

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


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


> Jan1   (16.04.07 13:40) [28]

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



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.044 c
15-1182177008
oldman
2007-06-18 18:30
2007.07.15
Все-таки в правильной области я работаю...


15-1181886133
Владимирс
2007-06-15 09:42
2007.07.15
"программист разработчик" или "программист-разработчик"


2-1182599910
Ламер 2.Х
2007-06-23 15:58
2007.07.15
Дата


1-1178402176
Драйвер
2007-05-06 01:56
2007.07.15
Поделитесь функцией HSV to RGB на Паскале ?


15-1181765527
megajober3d
2007-06-14 00:12
2007.07.15
Как работать с idHTTP, кто знает, кто здесь самый крутой :)!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский