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

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

Как перехватить исключение Ado? [D7, XP]


Сергей ©   (2011-08-23 18:27:00) 

Всем привет. Подскажите почему блок Try Except End не  перехватывает ошибки ADO и как их перехватить? После возникновения ошибки появляется сообщение, мне нужно что бы оно не появлялось. Я где-то читал что ошибки ADO обрабатываются не Delphi a самим Ado, как их обработать. Использую AdoConnection и AdoQuery. Спасибо.


OW   (2011-08-24 08:46:00) [1]

также есть свойство

if ADOConnection.Errors.Count > 0 then
ошибка точно этого соединения, а не чего-то еще

i = 0 to ADOConnection.Errors.Count - 1
ADOConnection.Errors.Item[i].Description (.Source .SQLState) а именно какие


Dennis I. Komarov   (2011-08-23 23:27:00) [2]


> Игорь Шевченко ©   (23.08.11 23:22) [9]

Не толкай новенького с пути истинного, ибо свет... а дальше не придумал ;)


Игорь Шевченко   (2011-08-23 23:22:00) [3]


> не юзайте TADOQuery


Еще один баптист. Когда же вы переведетесь ? ;)


Dennis I. Komarov   (2011-08-23 20:24:00) [4]

with TADOCommand.Create(Self) do try
 LoginPrompt:= false;
 ConnectString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+FileBaseName + ';Mode=ReadWrite;Persist Security Info=False;';
//Или к конекшену, но тогда конекшен никак не тут инициализируется
 Command:='ALTER TABLE ' +NameTableMes+ ' ADD ' +Account+ ' VARCHAR(64) NOT NULL'; // хрень какая то...
  ExecSQL; //Ничерта не понял, чего возвращается должно
finally
 Free;
end;

P.S. Сильно не пинать, писал прят тут, но если что где - исправлять ТС
P.P.S. Автору почитать про хранимки (хотя...)
P.P.S. И конечно от sniknik: не юзайте TADOQuery


Ega23   (2011-08-23 20:15:00) [5]

var
 list: TStringList;
begin
 list := TStringList.Create;
 try
   try
     // Подываем исключение List index out of bounds
     ShowMessage(list[1]);
   except on E: Exception do
     begin
        ShowMessage('except-блок, исключение ' + E.Message);
        if MessageBox(Handle, PChar('Произошло исключение'#13#10 +
                                                E.Message + #13#10 +
                                                Поднять исключение снова?),
                            PChar('Ошибка'), MB_OKCANCEL) = IDOK then
          raise;
     
     end;
   end;
 finally
   ShowMessage('finally-блок, выполняется полюбому');
   list.Free;
 end;
end;


вроде так


sniknik   (2011-08-23 20:09:00) [6]

> почему блок Try ExceptEnd
> переходим в блок после finally
дальтоник, оранжевое от зеленого отличить не можешь?


Anatoly Podgoretsky   (2011-08-23 19:56:00) [7]

> Сергей  (23.08.2011 19:43:04)  [4]

И что?


Сергей   (2011-08-23 19:43:00) [8]

в случае исключения переходим в блок после finally


sniknik   (2011-08-23 19:39:00) [9]

теперь покажи Except


Сергей   (2011-08-23 19:01:00) [10]

function TfrmMain.AddAccount(FileBaseName, NameTableMes, Account:String): boolean;
var
ADOConnection:TADOConnection;
ADOQuery:TADOQuery;
ConnectString: String;
SqlString:String;
RecordCount: Integer;
ListNameCol: TStrings;
ListIndex: Integer;
SqlStringCol,SqlStringData: String;
begin
 try
   result:=false;
   Screen.Cursor := crSQLWait;
   ListNameCol:=TStringList.Create;
   ADOConnection:=TADOConnection.Create(self);
   ADOQuery:= TADOQuery.Create(self);
   ConnectString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+FileBaseName + ';Mode=ReadWrite;Persist Security Info=False;';
   ADOConnection.ConnectionString :=ConnectString;
   ADOConnection.Connected := false;
   ADOConnection.LoginPrompt:= false;
   ADOConnection.Connected := true;
   ADOQuery.Connection:=ADOConnection;
   ADOQuery.Active :=  false;
   SqlString:='ALTER TABLE ' +NameTableMes+ ' ADD ' +Account+ ' VARCHAR(64) NOT NULL';
   // загружаю поле сообщений
   ADOQuery.SQL.Clear;
   ADOQuery.SQL.Add(SqlString);
   ADOQuery.ExecSQL;
   result:=true;
 finally
 ADOConnection.Free;
 ADOQuery.Free;
 Screen.Cursor :=crArrow;
 end;
end;


SQLEX   (2011-08-23 18:40:00) [11]

перехватываются
код покажите ваш


Наверх

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