Autor Thema: Datumsformat automatisch erkennen / umwandeln  (Gelesen 1586 mal)

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Datumsformat automatisch erkennen / umwandeln
« am: 12.02.15 - 09:25:48 »
Moin zusammen,

ich habe ein kleines Problem mit der Datumsformatierung bei der Datenversorgung einer Anwendung.

Die Anwendung wurde bis zum Jahreswechsel jeweils am ersten Arbeitstag des Monats mit Daten aus einer dbf-Datei aktualisiert. In den Datensätzen sind u.a. auch 2 Datumswerte enthalten, was aber nie zu Problemen führte.

Seit Febrauar werden die Importdaten als csv-Datei bereitgestellt und die Datumswerte in der csv haben nicht mehr den bisherigen typischen Aufbau

Tag.Monat.Jahr => 02.04.1935

sondern folgenden Aufbau

Jahr-Monat-Tag => 1935-04-02


Wenn ich die Werte aus der csv jetzt wie zuvor über den angepassten Importagenten in die entsprechenden Felder schreibe, passiert folgendes:

1935-01-21 wird zu 21.01.1935 (wie man es erwartet)

1935-01-11 wird zu 01.11.1935 (Tag und Monat werden vertauscht)

Bei allen Datumswerten, bei denen der Tag > 12 ist, ist alles in Ordnung. Bei allen anderen werden Tag und Monat vertauscht, was natürlich fatale Folgen bei der Nutzung der Anwendung mit sich bringt.

Ich suche jetzt nach einer verlässlichen Methode, mit der ich das gelieferte Datumsformat prüfen und so umwandeln kann, dass beim Schreiben in die jeweiligen Felder der korrekte Wert steht. Das Datenversorgungssystem kann ich leider nicht beinflussen.

Hat jemand ne Idee oder einen Ansatz für mich?


Gruß
Dirk
« Letzte Änderung: 12.02.15 - 09:28:35 von Keydins »
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Datumsformat automatisch erkennen / umwandeln
« Antwort #1 am: 12.02.15 - 10:11:12 »
Wie wandelst Du denn jetzt den Wert um?

Unter der Annahme, dass der Import mittels eines Scriptagenten erfolgt, würde ich den Wert aus der csv-Datei "zu Fuß" formatieren, z.B. so

Dim datumtmp As Variant
datumtmp = Split ("1935-01-11", "-")

Dann hast Du ein Array mit drei Elementen

datumtmp (0) -> "1935" -> Jahr
datumtmp (1) -> "01" -> Monat
datumtmp (2) -> "11" -> Tag

Und daraus baust Du Dir das gewünschte Datum zusammen

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: Datumsformat automatisch erkennen / umwandeln
« Antwort #2 am: 12.02.15 - 12:04:32 »
Für den Import ist ein Scriptagent verantwortlich und wir nutzen für sollche Importe seit Jahren die Bibliotheken des dBase.Integrators, der Im- und ExportLibs für diverse Dateiformate zur Verfügung stellt.

Eine Umwandlung hatte ich bisher nicht für nötig gehalten, da nach der Umstellung des Agenten auf die Verarbeitung von csv-Dateien der Testimport keine 'offensichtlichen' Fehler hatte.

Die Befüllung der Notesdokumente erfolgt über die vorgegebenen Variablen aus der jeweiligen ScriptLib.

Alt: doc.datBeginnLZ = dbfContent(12)
Neu: doc.datBeginnLZ = csvContent(12)

Die fehlerhafte Interpretation des Datums durch Notes ist nur zufällig aufgefallen, weil sich ein Mitarbeiter einen Termin für ein Abstimmungsmeeting zu einer Fälligkeit in seinen Kalender eingetragen hatte und sich dann gewundert hat, dass die Fälligkeit in der Anwendung nicht auf den 11.02.2015 sondern auf den 02.11.2015 lautete.


Vermutlich komme ich wohl nicht darum herum, in einem Konfigurationsdokument zu hinterlegen, in welchem Format das Datum erwartet wird, so dass ich dann im Agenten den Import abbrechen kann, falls ein anderes Format in der Datei geliefert wird.

Mal schaun, ob ich das mit dem Split kombinieren kann, so das man das Format nach Möglichkeit ohne einen Eingriff in den Agentencode bei Bedarf anpassen kann.

Auf jeden Fall brauche ich eine Prüfroutine, die eine unangekündigte Formatänderung erkennen kann.
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz