Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OnDeleteError - Fehlermeldung unterdrücken (https://www.delphipraxis.net/86060-ondeleteerror-fehlermeldung-unterdruecken.html)

hirnstroem 8. Feb 2007 13:14


OnDeleteError - Fehlermeldung unterdrücken
 
'loha Folks,

die folgende Prozedur wird aufgerufen, wenn beim Speichern eines Datensatzes etwas schief läuft.

Delphi-Quellcode:
procedure TIWUserSession.ADODataSet_DeviceDeleteError(DataSet: TDataSet;
  E: EDatabaseError; var Action: TDataAction);
begin

end;
Normalerweise wird dann eine Fehlermeldung angezeigt. Anstatt der Fehlermeldung würde ich aber gerne folgende Funktion ausführen, weiss aber nicht wie ich die Fehlermeldung wegbekomme.

Delphi-Quellcode:
IWServerController.Move('frmSystem_Devices_Management_Select');
Grüsse
hirnstroem

Bernhard Geyer 8. Feb 2007 13:30

Re: OnDeleteError - Fehlermeldung unterdrücken
 
ich denke es kommt eine Exeption beim Speichern.

Also einfach mit try ... except ... behandeln.

hirnstroem 8. Feb 2007 13:47

Re: OnDeleteError - Fehlermeldung unterdrücken
 
Das ist einleuchtend, nur geht es in diesem Fall (meiner Meinung nach) gar nicht, weil ich eine Komponente Namens TIWDBNavigator benutze, also nicht selber das Post Kommando gebe. Und da ich dieses Post Kommando nirgends sehe, kann ich es nicht mit einem try-except umhüllen (wahrscheinlich ginge dies, ich sehe aber nicht wie).

Aber ich bin soeben über die Abort Routine gestolpert. Ist wohl nicht schön, aber funktioniert.

[Edit]

Und anstatt OnDeleteError, mache ich jetzt folgendes:

Delphi-Quellcode:
procedure TfrmSystem_Devices_Management_Edit.BeforeDelete(Sender: TDataSet);
begin
  DataSet.BeforePost := nil;
  DataSet.Edit;
  DataSet.FieldByName('Active').Value := False;
  DataSet.FieldByName('UniqueID').Value :=
    DataSet.FieldByName('Address').AsString + '_' +
    DataSet.FieldByName('DeviceType.DeviceTypeID').AsString + '_' +
    DataSet.FieldByName('Active').AsString + '_' +
    DateTimeToStr(Now);
  DataSet.Post;
  DataSet.BeforeDelete := nil;
  IWServerController.Move('frmSystem_Devices_Management_Select');
  Abort;
end;
Ich will eigentlich nur das Löschen eines Datensatzes verhindern, aber trotzdem den Löschen-Knopf dieser Komponente benutzen um Datensätze verschwinden zu lassen.

[/Edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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