![]() |
Re: Alle Edit-Felder auf Eingaben prüfen
Zitat:
So, jetzt zu dem "Problem" Das mit dem AfterPost kann natürlich nicht gehen da Du das Query ja ganz anders benutzt als ich dachte (ist aber auch gut so). Die Ereignisse BeforPost, AfterPost usw. würde nur ausgelöst werden wenn Du über eine TDataSource irgendwelche DBxxxx-Komponenten verwendest oder im Code so etwas stehen hast:
Delphi-Quellcode:
Du arbeitest aber "direkt" mit SQL-Kommandos (INSTERT,UPDATE).
begin
Query1.Edit Query1.FieldByName ('blubb').AsString := Edit1.Text Query1.FieldByName ('meow').AsInteger := 0815; Query1.Post; end Bei dir müsstest Du also nur, wie von mir vorgeschlagen eine Funktion schreiben welche die Fehler prüft. Wenn diese TRUE liefert führst Du deinen Code im OnClick des Buttons aus und wenn FALSE kommt dann gibst Du die Meldung aus. Ich würde den ganzen Code zum Eintragen der Daten aber auch noch in eine Funktion auslagern. So das Du diesen Pseudocode hast:
Delphi-Quellcode:
procedure TForm1.btnspeichernClick(Sender: TObject); begin if (EingabeTest) then begin SpeicherenNeuenDatensatz; end else begin Fehlermeldung; end; end; |
Re: Alle Edit-Felder auf Eingaben prüfen
Es funktioniert mit einer kleiner Ausnahme. Ich benutze zur Datumseingabe das TDateEdit der RXLib. Hier ist Standardmäßig als Text " . . " hinterlegt. Bei der Prüfung der Textlänge >0 zählt er (so vermute ich jedenfalls) die Punkte. D.h. wenn alle anderen ausgefüllt sind aber die Terminangaben fehlen so nimmt er den Datensatz. Obwohl die Felder in der DB als NotNull deklariert sind (sollte dann nicht wenigstens hier Firebird meckern??). Ich benutze diese Objekte, da ich sie einfach "Benutzerfreundlich" finde und somit ein Datumsformat erzwinge.
P.S. selbst wenn ich die Prüflänge auf >2 setze nimmt er eine leeres TDateEdit-Feld. |
Re: Alle Edit-Felder auf Eingaben prüfen
Hai Ati,
du könntest mal prüfen was genau in einem lehren TDateEdit steht. Im notfall versuche in einem try-except Block eine Umwandlung in ein TDate versuchen. Wenn diese fehlschlägt gibt deine Testfunktion ein False zurück. |
Re: Alle Edit-Felder auf Eingaben prüfen
Hai Sharky,
nicht das Du denkst ich habe Deinen Tip unter dem Tisch fallen lassen. Hier mal meine Prüffunktion für das Datumsfeld:
Delphi-Quellcode:
Wenn man das eleganter lösen kann bitte ich um Korrektur!!!
function DateEditTest( const aDateEdit : TDateEdit): Boolean;
var dat:Tdate; begin result:=true; try dat:= strtodate(aDateEdit.Text); except result:=false; end; end; Ati |
Re: Alle Edit-Felder auf Eingaben prüfen
Zitat:
Alternativ könntest Du noch prüfen ob in der Eigenschaft .Text (wenn es die bei dem DateEdit gibt) etwas eingetragen wurde. |
Re: Alle Edit-Felder auf Eingaben prüfen
Das habe ich ja als erstes versucht. Nur vermute ich das die Pünktchen als Eingabe gewertet werden.
Aus Deiner Antwort schliesse ich aber das Du mit meiner aktuellen Lösung "zufrieden" bist. Ati |
Re: Alle Edit-Felder auf Eingaben prüfen
Zitat:
Delphi-Quellcode:
Aber ich finde das mit dem try-except besser da so auch falsch Eingaben abgefangen werden.
function DateEditTest( const aDateEdit : TDateEdit): Boolean;
begin result := StringReplace(aDateEdit.Text,' ','',[rfReplaceAll]) <> '..'; end; |
Re: Alle Edit-Felder auf Eingaben prüfen
Danke für die Blumen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz