Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fehlermeldung von Delphi ausschalten (https://www.delphipraxis.net/149667-fehlermeldung-von-delphi-ausschalten.html)

Mescal 26. Mär 2010 23:11

Datenbank: Interbase • Version: 9 • Zugriff über: ODBC

Fehlermeldung von Delphi ausschalten
 
Hallo, habe mal eine Frage, zum Thema Fehlerdialog abfangen und mit eigenen Text versehen.
Ich habe mir eine Datenbankanwendung mit Interbase geschrieben.
Habe eine Tabelle mit einer Spalte Postleitzahl. Die auf eine richtige Angabe geprüft wird.
(Prüfe ob der Wert zwischen 10000 und 99999 liegt)
Wenn ich jetzt einen falschen Wert eintrage, kommt es ja logischerweise zu einer Fehlermeldung.

Die Fehlermeldung die Ausgegeben wird, heißt
(Operation violates Check constraint INTEG_40 on view or Table Postleitzahl).
Der Anwender, der dann damit arbeiten soll, wird mit der Fehlermeldung aber nichts anfangen können. Deshalb hätte ich lieber meine eigene Message.

Ich habe beim Tool „TIBDataSet“ unter dem Ereigniss „OnPostError“ folgenden Quelltext rein geschrieben.
„{$i-}
ShowMessage('Postleitzahl muss einen Wert zwischen 10000 und 99999 haben!')“


So, dann wird mir zwar, zuerst meine Message angezeigt, aber danach kommt wieder die Delphi Fehlermeldung. Wie kann ich die, den ausschalten? Kann mir da bitte jemand helfen.

Danke schon mal für die Mühe.

Valle 27. Mär 2010 00:28

Re: Fehlermeldung von Delphi ausschalten
 
Zitat:

Zitat von Mescal
(Prüfe ob der Wert zwischen 10000 und 99999 liegt)

Ich wohne in 06375... :gruebel: Das solltest du nochmal überdenken.

Edit:// Argh, ist das peinlich. Das ist ja meine Telefon Vorwahl. :oops:
*ganz tief im Boden versink*

Dennoch solltest du dir diesen Artikel anschauen. :-)

Edit 2://[b] Okay, ich habe noch mal genauer nachgeforscht. Und so ganz peinlich war die Aktion gar nicht. *g* Ich selbst tauge als Beispiel zwar nicht, aber wenn man sich die Postleitzahl von Dresden anschaut, dann merkt man, dass das Prinzip das gleiche ist :-)

Liebe Grüße,
Valle

haentschman 27. Mär 2010 05:58

Re: Fehlermeldung von Delphi ausschalten
 
guten Morgen...

ich schätze mal, daß das Ereignis OnPostError nicht das try / except ersetzt :zwinker: Du kriegst zwar deine Meldung und dann kommt die vom System ganz normal. Setze deine Meldung in einen try / except Block deiner Post Routine und es kommt nur noch deine Meldung.

:hi:

mjustin 27. Mär 2010 06:49

Re: Fehlermeldung von Delphi ausschalten
 
Hi,

im OnBeforePost Event würde ich den Fehler vermeiden indem ich dort den Wert prüfe und bei Verletzung der Grenzen mit

ShowMessage(' .... ');
Feld.FocusControl;
Abort;

den Benutzer informieren.

(auch wenn dadurch die Logik in DB und Client doppelt liegen würde)

Cheers,

hoika 27. Mär 2010 07:06

Re: Fehlermeldung von Delphi ausschalten
 
Hallo,

trotzdem würde ich es auch so machen,
also vorher auch schon prüfen.

Zu der Exception.

Delphi-Quellcode:
try
  // ExecSQL;
except
  on E: DBEngineError do
  begin
    if E.DBErrorCode  // selber mal bei DBEngineError sehen, was es so gibt
  end;
end;
Hier ein Ansatz (per BDE)

1


Heiko

haentschman 27. Mär 2010 15:29

Re: Fehlermeldung von Delphi ausschalten
 
Hallo...
Zitat:

trotzdem würde ich es auch so machen,
also vorher auch schon prüfen.
...selbstverständlich gehören Blödsinnseingaben vorher abgefangen. Das stand aber nicht zur Diskussion :zwinker:

mjustin 27. Mär 2010 16:09

Re: Fehlermeldung von Delphi ausschalten
 
Zitat:

Zitat von Mescal
So, dann wird mir zwar, zuerst meine Message angezeigt, aber danach kommt wieder die Delphi Fehlermeldung. Wie kann ich die, den ausschalten? Kann mir da bitte jemand helfen.

Nach dem Anzeigen der eigenen Fehlermeldung einfach Abort aufrufen - das ist eine sogenannte 'stille Exception', dadurch wird OnPostError ohne weitere Fehlermeldung verlassen.

Mescal 28. Mär 2010 13:11

Re: Fehlermeldung von Delphi ausschalten
 
Vielen dank für die Antworten. Ihr habt mir alle sehr weitergeholfen und es geht jetzt mit der eigenen Fehlermeldung.

Danke noch mal und eine Gute Zeit. :thumb:


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