Bei der Arbeit mit
ADO-Komponenten hat man manchmal das Problem, dass Exceptions eine ungenaue
Fehlerbeschreibung liefern (Fehler bei einem aus mehreren Schritten bestehenden Vorgang ...).
Abhilfe schafft dann folgende Vorgehensweise:
Delphi-Quellcode:
try
ADOQuery1.Open;
// hier wird die Exception erzeugt
except
On E:
Exception do
begin
// die Message der Exception wird angereichert um zusätzliche Informationen
E.
Message := E.
Message + #13#10+ GetAllADOErrors(ADOQuery1.connection);
// die Exception wird erneut ausgelöst
Raise;
end;
end;
Und hier nun die Hilfsfunktion
GetAllADOErrors:
Delphi-Quellcode:
uses ..., ADOInt;
// wird benötigt wegen Zugriff auf die Errors-Collection
{**************************************************************************
* NAME: GetAllADOErrors
* DESC: Alle Fehler einer ADO Connection als String zurückgeben
* PARAMS: cn => die ADO Connection
* RESULT: alle Fehlermeldungen aus der Errors-collection
* CREATED: 28-08-2002/shmia
*************************************************************************}
function GetAllADOErrors(cn: TADOConnection):
string;
var
i : Integer;
e : ADOInt.Errors;
begin
e := cn.ConnectionObject.Errors;
for i := 0
to e.Count-1
do
begin
Result := Result +
Format('
#%d %s'#13, [e.item[i].Number, e.Item[i].Source]) + #13
+ e.Item[i].Description+#13+
e.Item[i].SQLState+#13;
end;
end;
[edit=Matze]Code formatiert. Mfg, Matze[/edit]