[gelöst] String zu Datum konvertieren

20. August 2008 16:24

Hallo Liebe Forumgemeinde,

Vielleicht könnt Ihr mir ja auf die Sprünge helfen, ich bin noch ein ziemlicher newbie in Navision.
Mit dem FORMAT Befehl kann ich ja z.B. ein Datum in einen String wandeln, ich habe jetzt also z.B. den String "01.08.08" dann hab ich diesen String bearbeitet damit die Jahreszahl vierstellig wird "01.08.2008" das hat auch alles wunderbar geklappt, nur wenn ich jetzt versuche diesen String wieder auf eine Datumvariable zu schreiben dann kriege ich immer einen Fehler.
Wisst Ihr zufällig wie ich einen String wieder in ein Datum konvertieren kann?

MFG

Wayne
Zuletzt geändert von John Wayne am 21. August 2008 11:43, insgesamt 2-mal geändert.

Re: String zu Datum konvertieren

20. August 2008 16:33

Hi Wayne,

ich musste dein Thema aus dem Ursprungsthema lösen. Im ersten Beitrag im Them steht:

Bitte benutzt dieses Thema nur für Veröffentlichungen von funktionierenden Beispielen. Für allfällige Diskussionen und Fragen zum FORMAT-Befehl bitte ich euch, jeweils ein eigenes Thema im entsprechenden Forum zu eröffnen. Daraus resultierende, funktionsfähige Beispiele können dann hier angefügt werden.


Falls du momentan mit einer anderen NAV-Version als 5.xx arbeitest, verrate mir bitte die richtige.

Re: String zu Datum konvertieren

20. August 2008 16:41

Danke erstmal für die schnelle Antwort.

Ich versuche das in Version 3.6 umzusetzen.
Zuletzt geändert von Timo Lässer am 20. August 2008 16:43, insgesamt 1-mal geändert.
Grund: Beitrag aus "Dynamics NAV 5.xx" nach "Dynamics NAV 3.xx" verschoben.

Re: String zu Datum konvertieren

20. August 2008 16:41

John Wayne hat geschrieben:Wisst Ihr zufällig wie ich einen String wieder in ein Datum konvertieren kann?

Nutze den Befehl [Ok:=]EVALUATE(Variable, String):
Code:
EVALUATE(MeinDatum,MeinString);

Re: String zu Datum konvertieren

20. August 2008 16:50

Oh wunderbar, das hat geklappt, danke... :-D

Jetzt hab ich aber nochmal eine Frage, und zwar gibt er mir dann das Datum wieder so aus -->"01.08.85" und nicht so -->"01.08.1985" also vierstellig.
Gibt es da auch noch Möglichkeiten das Jahr vierstellig auszugeben? Ich habe schon folgendes probiert --> EVALUATE(FORMAT(MeinDatum,0,'<day,2>.<month,2>.<year4>'),MeinString)
aber so richtig scheint das auch nicht zu klappen.

Re: String zu Datum konvertieren

20. August 2008 16:57

Wenn du einen String in eine Date-Variable evaluierst, dann darfst du keinen Format-Befehl verwenden, da das Ergebnis wieder ein String wäre.

Wie NAV das Datum in einer Date-Variablen (oder -Feld) speichert ist erstmal zweitrangig. Willst du es später wieder anzeigen, dann kannst du bei einem Feld das Format-Property verwenden, bei der Zuweisung in eine Text-Variable nimmst du dann den von dir zitierten Format-Befehl.

Übrigens: Welche Jahreszahlen von NAV auf zwei Stellen gekürzt werden kann in der Windows Systemsteuerung hinterlegt werden. NAV nutzt nämlich die Windows-Einstellung.

Re: String zu Datum konvertieren

20. August 2008 17:04

danke nochmal... :-)

Es geht darum diesen Wert also das Datum mit vierstelliger Jahreszahl wieder in eine Tabelle zu schreiben.
Wenn ich das Datum jedoch so wieder reinschreibe dann ist die Jahreszahl wieder nur 2 stellig

Re: String zu Datum konvertieren

20. August 2008 20:25

Nochmals: Wenn du das Datum aus einem String in ein Date-Feld oder eine Date-Variable überträgst, dann musst du es per EVALUATE übertragen.
NAV speichert das Datum intern schon mit einer vierstelligen Jahreszahl.

Wird nun dieses Tabellenfeld oder die Date-Variable in einem Textcontrol angezeigt, so zeigt NAV standardmäßig die Jahreszahl vierstellig, es sei denn, das Jahr befindet sich in dem Zeitraum, der in der Windows-Systemsteuerung für zweistellige Jahrszahl-Anzeige hinterlegt ist.
Möchtest du nun jedoch, dass das Datum in diesem Textcontrol (auf einer Form bzw. in einem Report) immer vierstellig angezeigt wird, so musst du in dem Format-Property des Controls die Ausgabe des Wertes formatieren.

Zusammengefasst: Du kannst einen Wert nicht bei der Eingabe in ein Feld, sondern nur bei der Ausgabe formatieren.
Übrigens: Nach jeder Eingabe eines Wertes in ein Feld, wird der soeben eingegebene Wert sofort angezeigt.
Gebe ich also in einem Date-Feld 20082008 ein, so zeigt mir NAV ja auch nicht 20082008, sondern 20.08.08. Hast du nun über das Format-Property definiert, dass beispielsweise der Monat ganz ausgeschrieben werden soll und die Jahreszahl immer vierstellig sein soll, so zeigt mir NAV nach selbiger Eingabe nun 20. August 2008 an.

Willst du einen Wert in einer Variablen oder einem Tabellenfeld speichern, so muss der Wert mit dem Datentyp der Variablen/des Feldes kompatibel sein.
Date <-> Text ist nicht kompatibel und muss vorher konvertiert werden.
Date -> Text konvertiert man mit Text := FORMAT(Date)
Text -> Date konvertiert man mit EVALUATE(Date,Text)

Ich hoffe, dass dir die Zusammenhänge jetzt ein wenig klarer werden.

Re: String zu Datum konvertieren

21. August 2008 08:52

Ok, jetzt weiß ich wie ich es machen kann...
Danke für die schnelle und umfangreiche hilfe, aber das war echt nötig wie gesagt bin noch ein absoluter anfänger in Navision.
BIG THX :-D :-D :-D


MFG

Wayne