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: General Questions > Eingabe-Controls (Datumswerte) vorbelegen mit berechneten Werten

Eingabe-Controls (Datumswerte) vorbelegen mit berechneten Werten

Hallo,

ich möchte Eingabecontrols für Datumsfelder auf
einer Eingabeseite
mit Werten vorbelegen. Diese Werte werden mittels SQL-Statements berechnet.
Beim Recherchieren hier im Forum bin ich darauf gestoßen, dass der "einfachste" Weg sein könnte, die Werte per Velocity zu ermitteln und dann über das Expert-Attribut "customdefault" im Eingabe-Control des Datums zu definieren.

Zum Testen habe ich auf der Eingabeseite ein VTL-Include-Control hinzugefügt und folgenden Inhalt als Velocity-Datei zugeordnet:

#set($l_maxDate = $PreparedQuery.executeAndGetScalarValue($DbConnection, "SELECT max(DT_START) FROM XDATAGROUPE28928E2"))
$l_maxDate


Das funktioniert zum Testen der SQL-Abfrage prima: das maximale Datum aus der Datengruppe wird ausgelesen und angezeigt.

Jetzt habe ich 2 Probleme, die ich aufgrund meiner fehlenden Erfahrung mit Velocity nicht gelöst bekomme. Daher bitte ich Euch um Hilfe:
1) Berechnen des neuen Wertes (Maximales Datum + 1 Tag): ich kann zwar grundsätzlich mit Velocity ein Datum erhöhen, z.B. in meinen Tests habe ich das so gemacht
#set($Datum = $DtUtil.date(2016,0,1, $User.getTimeZone()))
$Datum.addDays(1)
$Datum

aber das klappt nicht mit dem Resultat aus der Abfrage. Irgendwie glaube ich, dass das was mit dem Rückgabetyp der SQL-Abfrage zu tun hat, aber ich komm nicht drauf, wie ich das richtig mache.
2) Setzen des Vorgabe-Wertes im Eingabe-Control: irgendwo im Forum und in der Intrexx-Hilfe zu den Experten-Attributen habe ich gelesen, dass man über das Experten-Attribut "customdefault" auch Velocity-Code ausführen kann. Allerdings habe ich nirgendwo ein Beispiel gefunden, wie man das macht (z.B Syntax? Ganzes Velocity Script ins Attribut?)

Ich hoffe, es findet sich jemand, der mir helfen kann.

Vielen Dank,

Thomas

P.S.: Falls ich einfach zu doof bin und alles irgendwo nachgelesen werden kann, dann bitte ich um den Hinweis wo und bitte um Entschuldigung.


05.08.2016 14:28 von thomashohm
Die Lösung steht hier: https://www.unitedplanet.com/forum/index.php?page=Thread&postID=31169#post31169

Summary: das SQL muss einen Datentyp Datetime zurückliefern und der muss dann in einen Datentyp CalendarAwareDate gewandelt werden.

Der funktionierende Code für Problem 1 sieht jetzt so aus:

#set($l_maxDate = $PreparedQuery.executeAndGetScalarTimestampValue($DbConnection, "SELECT max(DT_START) FROM XDATAGROUPE28928E2"))
#set($datum=$DtUtil.wrap($l_maxDate))
$datum.addDays(1)
$datum


Problem 2 ist noch offen und ich habe noch keine Idee...
05.08.2016 16:32 von thomashohm
Ich habe hier diesen Beitrag gefunden, in dem das auch erklärt wird, aber bei mir will es einfach nicht.
https://www.unitedplanet.com/forum/index.php?page=Thread&postID=27643#post27643
05.08.2016 16:49 von thomashohm
Nach mehreren Knoten im Hirn:
Ich habe den Wert testweise in ein Eingabefeld ohne Datenfeld-Bindung ausgegeben und bin dadurch dem Problem auf die Schliche gekommen.
Das Problem ist die Formatierung des Datums in der Variablen und der erwarteten Datumsformatierung im Eingabefeld.
Das muss übereinstimmen.
Die Variable aus dem Velocity-Script ist m.E. nach Server-Datumsformatierung und das Browserfeld ist nach den Einstellungen in der Applikation formatiert. Wenn die Formate nicht übereinstimmen, dann wird das Feld den Default-Wert nicht akzeptieren.

Mein Code im Velocity-Script sieht jetzt so aus:
#set($datum_von_rd = $DtUtil.formatDate("dd.MM.yyyy HH:mm", $datum_von, $tz))



Und im Expert-Attribut "customdefault" steht nur: $!datum_von_rd

Das ist mit Sicherheit eine schlechte, weil nicht dynamische Lösung. Aber ich bin ja noch am Lernen :-)
05.08.2016 17:51 von thomashohm
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

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