Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Datenbanken (https://www.delphipraxis.net/22-library-datenbanken/)
-   -   Delphi ADO-Fehler (bestehend aus mehreren Schritten) anzeigen (https://www.delphipraxis.net/24671-ado-fehler-bestehend-aus-mehreren-schritten-anzeigen.html)

shmia 24. Jun 2004 10:59


ADO-Fehler (bestehend aus mehreren Schritten) anzeigen
 
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]


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz