![]() |
Re: Alle Edit-Felder auf Eingaben prüfen
Man Man Man. Klar hatte ich das vergessen. Und tmpComponent := Components[i]; hatte ich auch nicht eingetragen.
Aber jetzt nimmt er wieder alle Eingaben auch die leeren!!!!!!! |
Re: Alle Edit-Felder auf Eingaben prüfen
Hai Ati,
ich vermisse in deinem Code diese Zeilen aus meinem:
Delphi-Quellcode:
Bei dir ist der Wert von Test ja nur von der letzten überprüften Componente abhängig. Wenn in dieser etwas steht ist test bei Dir True. Darum breche ich ja sobald die erste Componente ohne Inhalt gefunden wurde die FOR-DO-Schleife ab.
if not (test) then
begin break; end; |
Re: Alle Edit-Felder auf Eingaben prüfen
Stimmt hatte ich übersehen. Jetzt meckert er Dein "break" an
|
Re: Alle Edit-Felder auf Eingaben prüfen
Zitat:
Delphi-Quellcode:
begin
for i := 1 to 100 do begin if not (test) then begin break; // Hier ist es Okay; end; end; // Ende der Schleife if not (test) then begin break; // Hier würde der Compiler meckern weil wir ausser halb einer Schleife sind. end; end; |
Re: Alle Edit-Felder auf Eingaben prüfen
Jetzt scheint es endlich zu funktionieren. Mußte nur noch ein "exit" hinter dem Showmessage-Befehl setzen, weil nach der Prüfung der Datensatz in eine DB geschrieben wird und das muß ja unbedingt verhindert werden.
Werde morgen noch mal alles ausprobieren und dann bescheid sagen. Will jetzt einfach nur noch nach Hause. Danke Ati |
Re: Alle Edit-Felder auf Eingaben prüfen
Zitat:
![]() |
Re: Alle Edit-Felder auf Eingaben prüfen
Da ich ja ein gelehriger Schüler bin habe ich versucht Deinen Tip umzusetzen. Und den Prüfcode in das "BeforePost"-Ereignis des Query´s eingebaut. Wie auch nicht anders zu erwarten funktioniert das bei mir nicht.
Es werden wieder halbe Datensätze gespeichert. Wo muß ich genau DataSet.Cancel einsetzen? Welcher Teil vom Prüfcode muß in dem BeforePost-Ereignis und was muß im Button-Ereignis bleiben? |
Re: Alle Edit-Felder auf Eingaben prüfen
Hai Ati,
so würde es bei mir wohl aussehen (ungetestet):
Delphi-Quellcode:
function TForm1.CheckInput: Boolean;
var datum:TDate; zeit:TTime; i: integer; test:boolean; tmpComponent : TComponent; begin test := True; for i := 0 to Form1.ComponentCount -1 do begin if (tmpComponent is TMaskEdit) then // Test des MaskEdit begin test := MaskEditTest (tmpComponent as TMaskEdit); end; if (tmpComponent is TDateEdit) then // Test des DateEdit begin test := DateEditTest (tmpComponent as TDateEdit); end; if (tmpComponent is TCombobox) then // Test der ComboBox begin test := ComboTest (tmpComponent as TCombobox); end; if not (test) then begin break; end; end; result := test; end; procedure TForm1.ADOQuery1BeforePost(DataSet: TDataSet); begin if not (CheckInput) then begin DataSet.Cancel; ShowMessage('Bitte prüfen sie die Eingabe'); end; end; procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Post; end; |
Re: Alle Edit-Felder auf Eingaben prüfen
Wie Du ja vor kurzem mitbekommen hast bin ich gerade am Anfang bezüglich der Datenbankprogrammierung unter Delphi. Daher kann ich so gewisse Sachen noch nicht ganz miteinander in Beziehung bringen. Auch auf die Gefahr hin das sich hier einige gleich ausschütten werden vor Lachen anbei mal mein gesamter Quelltext.
Delphi-Quellcode:
Ich denke mal das Verfahren zum löschen der Eingabefelder geht auch "eleganter". Also habt ein bischen Gnade mit mir.
public
procedure clear; { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} function ComboTest(const acombo : TCombobox): boolean; begin result := Length (acombo.Text) > 0; end; function DateEditTest( const aDateEdit : TDateEdit): Boolean; begin result := Length (aDateEdit.Text) >0; // Ein Passender Code end; function MaskEditTest(const aMaskEdit : TMaskEdit): Boolean; begin result := Length (aMaskEdit.text) >0; // und noch ein Code; end; procedure TForm1.clear; begin edvim.text:=''; edbenr.Text:=''; edlief.Text:=''; delterm.Text:=''; edkunde.Text:=''; edabnr.Text:=''; cbaufgabe.Text:=''; dekterm.Text:=''; edbemerk.Text:=''; edvim.SetFocus; end; procedure TForm1.btnspeichernClick(Sender: TObject); var datum:TDate; zeit:TTime; begin datum:=date; zeit:=time; qrmain.Sql.Clear; qrmain.Sql.Text:='Insert into Anforderungen (vim,benr,lieferant,ltermin,kunde,'+ 'abnr,aufgabe,ktermin,bemerkung,anfdat,anfuhr)' + 'VALUES ('+quotedstr(edvim.text)+','+quotedstr(edbenr.text)+','+ quotedstr(edlief.text)+','+quotedstr(delterm.text)+','+ quotedstr(edkunde.text)+','+quotedstr(edabnr.text)+','+ quotedstr(cbaufgabe.text)+','+quotedstr(dekterm.text)+','+ quotedstr(edbemerk.text)+','+quotedstr(datetostr(datum))+','+ quotedstr(timetostr(zeit))+');'; qrmain.ExecSql; body.Clear; body.Lines.Add('VIM: '+edvim.text); body.Lines.Add('BE_NR: '+edbenr.text); smtp.MailMessage:=body.Lines; smtp.Mail; clear; end; procedure TForm1.btnabbruchClick(Sender: TObject); begin clear; end; procedure TForm1.btnendeClick(Sender: TObject); begin application.Terminate; end; procedure TForm1.FormCreate(Sender: TObject); begin smtp.Connect; end; procedure TForm1.qrmainBeforePost(DataSet: TDataSet); var i: integer; test:boolean; tmpComponent : TComponent; begin test:=true; for i := 0 to Form1.ComponentCount -1 do begin tmpComponent := Components[i]; if (tmpComponent is TMaskEdit) then // Test des MaskEdit begin test := MaskEditTest (tmpComponent as TMaskEdit); end; if (tmpComponent is TDateEdit) then // Test des DateEdit begin test := DateEditTest (tmpComponent as TDateEdit); end; if (tmpComponent is TCombobox) then // Test der VomboBox begin test := ComboTest (tmpComponent as TCombobox); end; if not (test) then begin break; end; end; if not (Test) then begin ShowMessage('Fehler bei der Eingabe'); Dataset.Cancel; end; end; end. Ati |
Re: Alle Edit-Felder auf Eingaben prüfen
Wenn ich mit der Post-Methode arbeite meckert er das die Datenmenge sich nicht im Editier bzw Einfügemodus befinden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 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