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

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

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


Фазер ©   (2004-11-15 08:59:00) 

Наваял код, с исключениями в первый раз, если 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;


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

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


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

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


kostan   (2004-11-15 10:14:00) [3]

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


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

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


kostan   (2004-11-15 09:52:00) [5]

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

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

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


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

В смысле так? Тот же результат, с "циклом с 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:30:00) [7]

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

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


Наверх

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