Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > Datumsstring aus Kontrolle in Velocity an SQL Statement übergeben

Datumsstring aus Kontrolle in Velocity an SQL Statement übergeben

Hallo zusammen,

ich habe gesehen dass es dieses Thema hier schon mal gab, aber leider funktionieren die entsprechenden Lösungsvorschläge bei mir nicht.
Deswegen noch mal die Frage in die Runde:

Ich habe ein Velocity Template welches via Request-Parameter einen Datumsstring aus einer Kontrolle bekommt.

Der String der im Template ankommt sieht z.B. So aus:

11.10.2016 15:37


Ich will diesen dann an ein SQL Statement (INSERT) übergeben mittels:

#set($newDate = $Request.get("rq_newdate"))
#set($calDate = $DtUtil.isoStringToDate($newDate))
$statement.setTimestamp(4, $calDate)


Leider schlägt das Parsen mittels isoStringToDate immer fehl. Die Variable $calDate bleibt Null.

Ich habe es auch so versucht:

#set($newDate = $Request.get("rq_newdate"))
#set($calDate = $DtUtil.parseDate("dd-MM-yyyy hh:mm", $newDate, $User.getTimeZone()))
$statement.setTimestamp(4, $calDate)


Leider scheint das Parsen auch hier nicht zu funktionieren.
$calDate ist Null.

Hat jemand eine Idee was ich falsch mache?

Viele Grüße
Jan
14.10.2016 09:54 von surreal
Hallo,

probier es mal mit:

#set($calDate = $DtUtil.formatDate("dd-MM-yyyy hh:mm", $newDate, $User.getTimeZone()))


Grüße aus Österreich!
14.10.2016 10:05 von nmayer
Hi,

vielen Dank, aber das verursach leider:

java.lang.IllegalArgumentException: No date given.


Vermutlich weil die formatDate Methode keinen String erwartet sondern ein Datumsobjekt.

Viele Grüße
Jan
14.10.2016 10:14 von surreal
Stimmt, da hast du recht.

Ich vermute, dass du den String zuvor noch in ein bestimmtes Format bringen musst, damit die Methode "$DtUtil.isoStringToDate" funktioniert.

In den Docs wird darauf verwiesen, dass der String folgendes Format benötigt: Parse a string of the form yyyy-MM-dd'T'HHmmss'Z' or yyyy-MM-dd'T'HHmmss.SSS'Z' as a date. Docs

Ist zwar eine Spielerei, wenn du das mit "subString" löst, jedoch könnte es funktionieren.
14.10.2016 10:31 von nmayer
Hi,

danke.
ja das wollte ich vermeiden :-)
Ich könnte schwören dass ich an anderer Stelle schon mit der parseDate Methode gearbeitet habe.
Deswegen habe ich keine Ahnung warum es hier einfach nicht funktioniert.
14.10.2016 10:52 von surreal
Ich vermute langsam einen Bug in den Methoden der Klasse DTUtil.
Ich verwende Intrexx 8.

Ich habe mal als Test folgendes gemacht:

#set($calDate = $DtUtil.date(2016, 10, 11, 15, 36, $User.getTimeZone()))
$statement.setTimestamp(4, $calDate)


Ich verwende also diesen Konstruktor:

date(int p_iYear, int p_iMonth, int p_iDay, int p_iHour, int p_iMinute, TimeZone p_tz)


Dummerweise addiert dieser Konstruktor zum angegebenen Monat scheinbar einen dazu.

Nach ausführen von obigem Code steht in der Datenbank:
2016-11-11 14:36:00.000

Wie doof ist das denn?
Noch mehr unvorhersehbares Verhalten.
14.10.2016 11:40 von surreal
Okay, Fehler gefunden:

Ich habe oben:

#set($calDate = $DtUtil.parseDate("dd-MM-yyyy hh:mm", $newDate, $User.getTimeZone()))

benutzt.

Es muss aber heißen:

#set($calDate = $DtUtil.parseDate("dd.MM.yyyy hh:mm", $newDate, $User.getTimeZone()))


*Argh*

Danke
14.10.2016 12:14 von surreal
Das ist ärgerlich.. aber wenigstens ist das Problem gelöst attention
14.10.2016 12:29 von nmayer
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg