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