Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Приветствую всех! Вопрос по обработке except при коннекте в БД   Найти похожие ветки 

 
Фазер   (2004-11-15 08:59) [0]

Наваял код, с исключениями в первый раз, если UDL меняю на "левую" БД, прога приконнектится ес-но не может, и в данном случае, гонит без остановки ShowMessage, будто в цикле, прогу приходится снимать по ALT+CTRL+DEL, подскажите плз, что не так в коде, и как в таком случае стандартизированно написать подобный код? Т.е. ShowMessage вынести в другу процедуру, а передавать только E.Message на неё? (Но это 2я часть вопроса..)
procedure Tdm1.DataModuleCreate(Sender: TObject);
begin
 try
   conn.Connected:=False;
   conn.ConnectionString:="FILE NAME="+ExtractFileDir(ParamStr(0))+"\link.udl";
   conn.Connected:=True;
 except
   on E: EADOError do ShowMessage(E.Message);
   on E: EOleException do ShowMessage(E.Message);
   on E: EDataBaseError do ShowMessage(E.Message);
   else ShowMessage("Неизвестная ошибка!");
 end;
end;


 
kostan ©   (2004-11-15 09:30) [1]

не знаю конечно:)  но на этапе создания модуля не желательно делать коннект (возможно просто не заводится сам DB).

попробуй вызвать его(коннект) через отдельную процу этого модуля
( по такому же принципу как у тебя )


 
Фазер   (2004-11-15 09:36) [2]

В смысле так? Тот же результат, с "циклом с ShowMessage"

procedure Tdm1.DataModuleCreate(Sender: TObject);
begin
  connect;
end;

procedure Tdm1.connect;
begin
 try
   conn.Connected:=False;
   conn.ConnectionString:="FILE NAME="+ExtractFileDir(ParamStr(0))+"\link.udl";
   conn.Connected:=True;
 except
   on E: EADOError do ShowMessage(E.Message);
   on E: EOleException do ShowMessage(E.Message);
   on E: EDataBaseError do ShowMessage(E.Message);
   else ShowMessage("Неизвестная ошибка!");
 end;
end;


 
kostan ©   (2004-11-15 09:52) [3]

не так
убрать вообще обработку при создании DModule

procedure Tdm1.DataModuleCreate(Sender: TObject);
begin
 // connect;
end;

и вызывать  dm1.connect потом  (можно из основного модуля)
если не получится то  и вобще убрать ShowMessage (так как он требует нажатия :\ да и вобще не красив:)))


 
Фазер   (2004-11-15 10:05) [4]

С вызовом разберемся, можно в OnTimer включить, с задержкой в 10мСек, главное, как бы обработать ошибку подключения к БД :(


 
kostan ©   (2004-11-15 10:14) [5]

у меня было нечто подобное (ошибка connect) но что б в цикле крутилось:((
че так и крутится ? (если запуск вне Create )


 
Фазер   (2004-11-15 10:21) [6]

Как сказать в цикле, просто, при запуске приложения с "левой" UDL, вываливается куча ShowMessage, с цента экрана, до трея, и потом там ещё рисуются по 10 штук в секунду или больше, и через 10 сек винда видимо сама прикрывает это приложение (т.е. я только хочу его прибить в таск менеджере, а его уже и нет).
PS. Приложение, для чистоты эксперемента, форма с гридом, и дата модуль. Код его выше приводил. Система 2000, конект к MSSQL2000, с этого же компьютера.


 
Фазер   (2004-11-15 11:01) [7]

Во, заработало!
kostan все правильно советовал, у меня при загрузке dm1 стартовала по OnTimer в 1мСек форма с вводом логина и пароля. Логин выполнен в виде DBLookupComboBox... Из этого всего и была проблема с "циклом ShowMessage". Подправил, теперь все Ок!



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

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.481 c
1-1101725416
Gloomer
2004-11-29 13:50
2004.12.12
Компонент выбора папки


14-1100909165
Soft
2004-11-20 03:06
2004.12.12
Письмо в госдуму


1-1101545019
alo
2004-11-27 11:43
2004.12.12
можно получить элемент set а по строке?


14-1101317048
YurikGL
2004-11-24 20:24
2004.12.12
Компьютером можно управлять взглядом.


14-1101044542
f00rd
2004-11-21 16:42
2004.12.12
SpeedButton + темы WinXP