Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Unterschiedliche Datum-Formate in ein DBEdit eingeben (https://www.delphipraxis.net/66001-unterschiedliche-datum-formate-ein-dbedit-eingeben.html)

ickehausen 23. Mär 2006 11:34

Datenbank: Interbase • Version: 6.0 • Zugriff über: IBX

Unterschiedliche Datum-Formate in ein DBEdit eingeben
 
Hallo,

ich habe in meinem Formular eine DBEdit-Komponente, die auf Date-Feld in einer IB-DB zugreift. Wenn ich ein Datum eingebe, muß ich es in der Form '23.03.2006' eingeben, da sonst beim weiterspringen in eine andere DBEdit-Komponente eine Fehlermeldung verursacht wird. Ich würde aber gern die Möglichkeit haben, das Datum in 3 verschiedenen Formaten einzugeben.

Hier die Formate:

'23.03.2006'
'23032006' und
230306'

Jetzt habe ich in meiner unendlichen Naivität gedacht, es ginge mit einer einfachen if-Abfragen:

Delphi-Quellcode:
procedure TFormVeranstaltung.DBEditVDatumExit(Sender: TObject);
var dat :string;
begin
  if length(DBEditVDatum.EditText) = 6 then
  DBEditVDatum.EditText := copy(DBEditVDatum.EditText,1,2) + '.' +
  copy(DBEditVDatum.EditText,3,2) + '.20' + copy(DBEditVDatum.EditText,5,2);
  if length(DBEditVDatum.EditText) = 8 then
  DBEditVDatum.EditText := copy(DBEditVDatum.EditText,1,2) + '.' +
  copy(DBEditVDatum.EditText,3,2) + '.' + copy(DBEditVDatum.EditText,5,2);
end;
Kann mir jemand einen Tip geben, wie ich das Problem lösen kann??? :?: :?: :?:

rory 25. Mär 2006 20:47

Re: Unterschiedliche Datum-Formate in ein DBEdit eingeben
 
dat := DBEditVDatum.EditText;

23.03.2006 (zehnstellig) und 23032006 (achtstellig):

Mit "stringreplace" in dat die Punkte durch '' (nix) ersetzen lassen => Achtstellig.

Wenn achtstellig mit "insert" die Punkte in dat wieder einsetzen.
DBEditVDatum.EditText := dat;

230306 (sechsstellig):

Mit "insert" 20 in dat einfügen => Achtstellig.

Wenn achtstellig mit "insert" die Punkte in dat wieder einsetzen.
DBEditVDatum.EditText := dat;

Falls jemand den 23.03.2006 aber als 23306 (fünfstellig) eintippt, wirds komplizierter, bei der vierstelligen Eingabe (4506 z.B. für den 04.05.2006) erst recht :-)

Mein Vorschlag: Die Datumsangabe nur über einen DateTimePicker erlauben.

mfg


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