[gelöst] Datumsformat bei Datenerfassung

22. September 2008 17:22

Hallo,
ich nutze das Forum bis jetzt ausschließlich zur Recherche (Ein dickes Lob an dieser Stelle an Alle!), komme nun allerdings nicht weiter und bitte um Unterstützung von Euch Profis:
Kann man in einer Form die Eingabe eines Datums auf ein bestimmtes Format beschränken?
z.B. soll der User das Datum nur im Format TT.MM.JJ erfassen können.
Die komfortablen Möglichkeiten in NAV in einem Datumfeld z.B. nur den Tag einzugeben führt unter Umständen zu Falscheingaben über einen Monatswechsel hinweg. Das würde ich gerne vermeiden, indem wir diesen Komfort in bestimmtenFeldern wegnehmen.
Kann man das in den Properties des entsprechenden Feldes in der Form oder der Tabelle festlegen?

Vielen Dank im Voraus!
Jürgen
Zuletzt geändert von Jürgen am 23. September 2008 09:00, insgesamt 1-mal geändert.

Re: Datumsformat bei Datenerfassung

22. September 2008 18:54

ich kann jetzt schlecht nachschauen ob es eine property gibt, wenn nicht, dann könntest du mit relativ kleinen mitteln ein paar funktionen in c/al schreiben die die eingaben abfangen, die bindest du in eine CU und kannst immer wenn du ein datumsfeld validierst einsetzen

Re: Datumsformat bei Datenerfassung

22. September 2008 21:13

Mir ist auch nur der Weg über C/AL-Code im OnAfterInput-Trigger bekannt:
(OnValidate ist zu spät, da NAV die Eingabe schon gewandelt hat.)

Code:
IF NOT (STRLEN(Text) IN [6,8,10]) THEN
  Error('Bitte das Datum im Format TT.MM.JJ eingeben.');

Diese kurze Prüfung erlaubt folgende Eingaben:
220908
22092008
22.09.08
22.09.2008

Falls unbedingt eine Eingabe mit Punkt erfolgen muss, könnte man es noch weiter einschränken:
Code:
IF NOT (STRLEN(Text) IN [8,10]) AND
   (Text[3] <> '.') AND
   (Text[6] <> '.')
THEN
  Error('Bitte das Datum im Format TT.MM.JJ eingeben.');


Sollen die Abkürzungen Arbeitsdatum und Heutiges Datum weiterhin erlaubt bleiben (da sie Tippfehler von vornherein ausschließen), so müsste folgende Bedingung vorgeschaltet werden:
Code:
IF (STRPOS('ARBEITSDATUM',UPPERCASE(Text)) = 0) AND
   (STRPOS('HEUTIGES DATUM',UPPERCASE(Text)) = 0)
THEN
  [...]


Da diese Programmierung auf jedem einzelnen Feld vorgenommen werden müsste, wo ein Datum eingegeben werden kann, rate ich dringend davon ab und empfehle eindringlich, die Anwender dahingehend zu sensibilisieren, dass sie die Eingabe sorgfältig prüfen sollen!
Wenn man sich intensiv mit den Funktionen in der Codeunit 1 beschäftigt, könnte man diese Prüfungen auch dort einbauen. Ist aber nicht ganz einfach, würde jedoch sofort für alle Datumsfelder gelten (inkl. Datumsfilter und Eingabefeldern, wo man sonst nicht drankommt (wie z. B. Änderung des Arbeitsdatums)).

Re: Datumsformat bei Datenerfassung

23. September 2008 08:58

Vielen Dank für die superschnellen Antworten!

Timo Lässer hat geschrieben:Da diese Programmierung auf jedem einzelnen Feld vorgenommen werden müsste, wo ein Datum eingegeben werden kann, rate ich dringend davon ab und empfehle eindringlich, die Anwender dahingehend zu sensibilisieren, dass sie die Eingabe sorgfältig prüfen sollen!

...wenn das so einfach wäre... :-)

OK, dann werde ich unseren Partner damit beauftragen. Wir haben Programmieren von Codeunits und Forms nicht lizenziert. :-(

Grüße
Jürgen