![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Приветствую всех! Вопрос по обработке 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).
попробуй вызвать его(коннект) через отдельную процу этого модуля
( по такому же принципу как у тебя )