Versuch' es mal bitte mit dem Abfangen von EAdoError, das dürfte eine näherliegende
Exception für das auftretende Problem sein.
Auszug aus 'nem Programm, das Datenbankfehler abfangen muss:
Delphi-Quellcode:
try
// Irgendwas, was für 'nen Datenbankfehler sorgen könnte.
Except
on e : EAdoError
do begin
slError := TStringList.Create;
slError.Add(e.
Message);
if con.Errors.Count > 0
then begin
for i := 0
to con.Errors.Count - 1
do begin
slError.Add(Format('
Number: %d',[con.Errors.Item[i].Number]));
slError.Add(Format('
NativeError: %d',[con.Errors.Item[i].NativeError]));
slError.Add(Format('
Description: %s',[con.Errors.Item[i].Description]));
slError.Add(Format('
Source: %s',[con.Errors.Item[i].Source]));
slError.Add(Format('
HelpFile: %s',[con.Errors.Item[i].HelpFile]));
slError.Add(Format('
SQLState: %s',[con.Errors.Item[i].SQLState]));
end;
MessageDlg(slError.Text,mtError, [mbOk],0);
end else begin
MessageDlg(e.
Message + #13#13 + qrySQL.SQL.Text, mtError, [mbOk], 0);
end;
slError.Free;
end;
on e :
Exception do begin
MessageDlg(e.
Message + #13#13 + qrySQL.SQL.Text, mtError, [mbOk], 0);
end;
end;
con ist die TAdoConnection,
qrySQL ist 'ne TADOQuery,
slError 'ne TStringList und i ist ein Integer.