Ankündigung

Einklappen
Keine Ankündigung bisher.

Datum zusammsetzen

Einklappen
X

Datum zusammsetzen

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Datum zusammsetzen

    Hallo zusammen
    ich bin derzeit daran eine Applikation für unsere Personalabteilung zu bauen, in welcher die Geburtstage und Dienstalter der Mitarbeiter ersichtlich werden.
    Die Daten hole ich per JDBC-Datenbankabfrage aus unserem HR-Programm. Damit ich die Daten nach Monat/Tag/Jahr sortieren kann nehme ich in der SQL-Abfrage das Datum per DATEPART nach Jahr, Monat und Tag auseinander und schreibe diese Werte in eigene Felder (GEB_DD, GEB_MM und GEB_YYYY).
    Nun möchte ich unserer Personalabteilung in einem Portlet ein Übersicht über die nächsten Geburtstage geben und solche die vorbei sind ausblenden, bzw. auch ein Mail basierend auf Monat/Tag versenden.
    Dazu müsste ich einen Prozess anstossen welcher mir die Werte Tag und Monat mit dem aktuellen Jahr in ein weiteres Feld schreibt -> also ein Feld GEB_AKT (mit Feldinhalt GEB_DD.GEB_MM.AKTUELLES JAHR)
    Ich denke dafür müsste ich eine Groovy-Aktion definieren, habe aber mit Groovy absolut keine Erfahrung bisher.
    Kann mir da jemand Tipps dazu geben?
    Danke.

  • #2
    Konnte es mittlerweile lösen ;o)
    für diejenigen die es interessiert meine Lösung.


    import de.uplanet.scripting.groovy.util.Safely

    def conn = g_dbConnections.systemConnection
    def stmt = null
    def iID = g_record["557F18C82941E23449226DF6E5245ECEC261D1D2"].value /* datafield (PK) (S) ID <integer> */

    def Geb_DD = g_record["D487BABA5860F288738B59FB3073438DECBD9307"].value /* datafield Geb_DD <integer> */
    def Geb_MM = g_record["3DD779342F8AD39AE97CEE7A66889BDFB0D5D1B7"].value /* datafield Geb_MM <integer> */
    def aktuell_Jahr = new Date()
    def Jahr_YYYY = "${1900+aktuell_Jahr.year}"
    def Datum = new Date().parse('dd.MM.yyyy', Geb_DD+"."+Geb_MM+"."+Jahr_YYYY)
    try

    {
    stmt = g_dbQuery.prepare(conn, "UPDATE DATAGROUP('DCE3E9CBC0C49E11B07F4E5652B1045C919CA16 4') SET DT_NEXTGEB = ? WHERE LID = ?")

    stmt.setDate(1, Datum)
    stmt.setInt(2, iID)
    stmt.executeUpdate()

    stmt = Safely.close(stmt)
    }
    finally
    {
    stmt = Safely.close(stmt)
    }

    Falls jemand noch optimierungspotenzial sieht, bitte melden.

    Ich habe das ganze dann noch erweitert und einen Prozess definiert, welcher prüft ob das zusammengesetzte Geburtsdatum bereits vorbei ist, falls ja wird statt def Jahr_YYYY = "${1900+aktuell_Jahr.year}" einfach "${1901+aktuell_Jahr.year}"verwenden...

    Kommentar


    • #3
      Hallo zusammen
      Ich habe die Applikation nun auf einer neuen Umgebung mit IX19.03 implementiert aber nun erhalte ich als Ergebnis immer den Vortag, also wenn DD = 21, MM = 2, YYYY =2019 ist so ist der zusammengesetzte Wert der 20.02.2019 02:00.
      In der alten Applikation lautet der selbe WErt dann 21.02.2019 00:00.
      Wo könnte da das Problem liegen?

      Kommentar


      • #4
        Es liegt daran, dass die UTC Zeit genutzt wird und dadurch -2h kommen.

        https://community.intrexx.com/intrex...n-einen-tag-ab

        Kommentar

        Lädt...
        X