SQL getdate -> Navision date/time

28. Januar 2009 10:21

Hallo zusammen!

Leider war die Forumssuche nicht wirklich ergiebig.

Ich arbeite derzeit an einem Navision-Projekt und per DML-Trigger möchte ich Änderungen (genau: Änderungsdatum/-Zeit) angeben. Der DML-Trigger funktioniert, aber ich weiß nicht wie ich das datetime-Format (aus getdate) des SQL-Servers in ein Date- und Time-Feld in Navision "umwandeln" kann, damit in Navision die Tabelle auch benutzt werden kann? Wenn ich stumpf per sql Daten in die Felder einlese, welche Navision nicht versteht, kann das Tabellen-Objekt nicht aufgerufen werden.
Für mich sieht das eigentlich nach einer Standard-Frage aus, nur konnte ich keine befriedigende Antwort finden.

Für Eure Hilfe wäre ich dankbar!

Gruß
Jan

Re: SQL getdate -> Navision date/time

28. Januar 2009 11:57

Hmm, was hält sich von der Nutzung eines DateTime Feldes in NAV ab? Damit sollten deine Probleme bereits gelöst sein, denn UTC SQL müsste auch UTC NAV sein.

Ansonsten solltest du dir mal eine Tablle zum Test erstellen mit 3 Beispielfeldern: Date, Time und DateTime. In diese kannst du dann Beispieldaten eingeben und die resultierenden Daten auf dem SQL Server prüfen. NAV werkelt hier mit den Jahren 1753 und 1754. Genaue Infos hab ich aber grad nicht zur Hand, müsste ich in einem alten Projekt gucken.

Re: SQL getdate -> Navision date/time

28. Januar 2009 17:01

Ja, es gibt bestimmte Konditionen, damit Nav sich Date- und Time-Fields bastelt.
Einmal setzt er beim Datefield die Uhrzeit auf 00:00:00. Bei Time-Field macht er dann das "0D" von SQL für den Date-Part des Feldes.
Leider ist Nav noch nicht so weit und versteht die SQL2008 Felder Date und Time noch nicht.
Hat jemand sich damit auseinandergesetzt, um die Felder konform zu machen? Ich sehe es eher als common-problem bei SQL-Dateninserts in Nav an. Immerhin ist dieses Problem ja nicht trivial (im vergleich zu UPPER() für Codefelder).

Danke
Gruß
Jan

Re: SQL getdate -> Navision date/time

28. Januar 2009 19:14

Hallo JanGD,

eine Sache die noch beachten solltest, dass NAV in DateTime-Feldern eine normalisierte Zeit abspeichert (Ich glaube UTC). Ansonsten bastle dir doch eine NAV-Tabelle mit einem DateTime-Feld, das du in NAV mit Test- Werten füllst. Dann kannst du die Tabelle in einem SQL-Query abfragen und dir die Werte ansehen, und weist dann was du per SQL eintragen kannst.

Gruß, Fiddi

Re: SQL getdate -> Navision date/time

3. Februar 2009 13:24

Hallo,

ja, das DateTime feld ist ja kein problem per sql zu füllen. Dazu einfach getdate() aufrufen (für DateTime MIT offset) oder halt die globale Variable UTCDATETIME (oder so ähnlich) für datetime ohne offset.

Problem sind halt die Date/Time Felder. Mir fällt auch gerade ein, dass ich ja gar nicht weiß, ob Nav mit diesen von sql gefüllten Felder auch sein Offset draufrechnet, oder er es bei den Feldern sein lässt. Hat da jemand schonmal Erfahrungen gesammelt?

Danke
Gruß
Jan