Announcement

Collapse
No announcement yet.

Exception / ErrorCode

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Exception / ErrorCode

    Hi,
    <br>D5, ADO, Access
    <br>
    <br>Ich würde gerne beim löschen von Datensätzen Fehler abfangen, die in Verbindung mit Referentiellen Integrität stehen.
    <br>Ansatz:
    <pre>
    On E: Exception do
    Showmessage('Fehler: Der Datensatz konnte nicht gelöscht werden. ("' + E.Message + '")');
    </pre>
    <br>Exception hat jedoch keine Eigenschaft, die einen Fehler Code zurück liefert. Auch dm1.cnnMain.Errors liefert so etwas nicht.
    <br>Wo bekomme ich den Fehlercode her, der eindeutig auf die referentiellen Integrität zurück zu führen ist?
    <br>
    <br>Danke!
    <br>
    <br>mfg
    <br>ps

  • #2
    Hallo,

    das halte ich für ein schlimmes Gerücht, dass die <b>Errors</b>-Kollektion von ADO keine Details wie zum Beispiel die native Fehlernummer der Datenbank zurückliefert :-)

    Die Auswertung dieser Infos könnte zum Beispiel so aussehen:
    <pre>
    procedure TForm1.ADODataSet1PostError(DataSet: TDataSet; E: EDatabaseError;
    var Action: TDataAction);
    var
    i : Integer;
    s : String;
    begin
    if E is EADOError then
    with E as EADOError do
    MemoLog.Lines.Add(e.Message);
    with ADOConnection1 do
    for i:= 0 to Errors.Count - 1 do
    begin
    s := Format('Source: %s', [Errors[i].Source]);
    MemoLog.Lines.Add(s);
    s := Format('NativeError: %d', [Errors[i].NativeError]);
    MemoLog.Lines.Add(s);
    s := Format('%s; (SQLState: %s)',
    [Errors[i].Description, Errors[i].SQLState]);
    MemoLog.Lines.Add(s);
    MemoLog.Lines.Add(' --- ');
    end;
    Action := daAbort;
    end;
    </pre>
    Über <b>NativeError</b> erhalte ich die exakte Fehlernummer, die vom Microsoft SQL Server 2000 ausgelöst wurde

    Comment


    • #3
      Vielen Dank!
      <br>
      <br>mfg
      <br>P

      Comment

      Working...
      X