Datumsabfrage verwundert
-
Hallo Leute,
ich arbeite mit BCB 5.0 und einer MS-Access2000-DB auf Win98, 2000 u. XP.
Ich habe eine Eingabemaske erstellt, über die der Benutzer Daten eingeben kann.
Hierbei möchte ich verhindern, dass ein zukünftiges Datum eingegeben wird.Beim Testen habe ich herausgefunden, dass es möglich ist, zukünftige Daten einzugeben, solange der Tag kleiner ist als der aktuelle Tag. Beispiel: 04.06.03 ist möglich, 05.05.03 nicht möglich, 07.03.03 auch nicht möglich. Das gleiche Problem tritt auf bei Eingaben für die Vergangenheit, z.B. 28.02.03 nicht möglich, 01.12.02 ist möglich.
Vielen Dank für eure Hilfe!
so habe ich das programmiert:
void __fastcall TfrmCPEingabe::btnSpeichernClick(TObject *Sender) { String datum; datum = DBEdEingabedatum->Text; // Exception "Datum nicht eingegeben" abfangen if (DBEdEingabedatum -> Text == "" ) ShowMessage(AnsiString("Feld Eingabedatum darf nicht leer sein!")); // Exception "Eingegebenes Datum größer als aktuelles Datum" abfangen if (DBEdEingabedatum -> Text > DateToStr(Date())) // oder if ( datum > DateToStr(Date())) ShowMessage (AnsiString("Eingabedatum darf nicht in der Zukunft liegen!")); // if (DBEdEingabedatum->Text != FormatDateTime("tt.mm.jj",datum)|| // DBEdEingabedatum->Text != FormatDateTime("tt.mm.jjjj",datum)) // ShowMessage(AnsiString("Ungültiges Datumsformat!")); }
P.S.: Die Abfrage auf das Datumsformat funzt auch nicht. Ich erhalte die Message jedes Mal
-
Hi,
Kein Wunder Du vergleichst ja Zwei Strings.
Ich würde die Datumswerte auf TDateTime
instanzen übertragen und dann die vergleichen,
oder Du zerlegst die Werte auf tag,monat etc., konvertierst in int und vergleichst die dannepidemic
-
@ epidemic:
das scheint ja einfacher zu sein, als ich dachte.
Jaja, der Wald und die vielen Bäume.Thx a lot