0

Von Zahl auf Datum umstellen

Hallo Zusammen,

bin neu im Thema (seid gestern). Habe ein Problem und in der Suche nix gefunden.

Frage: wie kann ich eine Spalte von Zahl auf Datum umstellen?

10 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 11 Monaten
    • Gemeldet - anzeigen

    Hallo Steffen ...

    Steffen Lehmann said:
    Frage: wie kann ich eine Spalte von Zahl auf Datum umstellen?

    Direkt gar nicht. Man müsste ein zweites Feld des Typs "Datum" erstellen und die Daten aus dem Zahlenfeld mit einem kleinen Skript in das Datumsfeld übertragen. Wie das genau aussehen könnte, hängt aber vom Aufbau der Zahl bzw. Ziffernfolge ab.

      • Steffen_Lehmann
      • vor 11 Monaten
      • Gemeldet - anzeigen

      planox. pro 

      Danke - WOW, wat für Sch.... Das ist jetzt mal ein größeres Problem.😢

      Ich habe eine Tabelle mit ca. 120 Spalten als csv importiert.

      Leider musste ich da dann einige Zelle manuell umstellen.

      Dabei sind nun mehrere Spalten statt als Datum als Zahl drin.

      Bedeutet  es steht jetzt statt 23.04.2023 -> 23042023.

      Wie würde ein Script dafür aussehen und wie spiele ich das ein?

      • Ninox-Professional
      • planoxpro
      • vor 11 Monaten
      • Gemeldet - anzeigen

      Steffen Lehmann 

      Erstelle irgendwo einen Button (im Admin-Modus unter "Layout-Felder") und schreibe folgendes Skript hinein:

      for i in select TABELLE do
         let myZ := format(i.ZAHL, "00000000");
         let myD := substr(myZ, 0, 2);
         let myM := substr(myZ, 2, 2);
         let myJ := substr(myZ, 4, 4);
         i.DATUM := date(myJ, myM, myD)
      end

      Wobei du TABELLE, ZAHL und DATUM natürlich durch die tatsächlichen Namen in deiner Tabelle ersetzen musst.

      • Ninox-Professional
      • planoxpro
      • vor 11 Monaten
      • Gemeldet - anzeigen

      Als Ergänzung zu Uwes Hinweis: Ich bin auch davon ausgegangen, dass der Monat immer 2- und das Jahr immer 4-stellig dargestellt werden, die Zahl insgesamt also immer 7 oder 8 Stellen hat. 7 Stellen dann, wenn die Tageszahl einstellig ist, weil die führende 0 entfernt wird. Mit dem format() sorgt man dafür, dass die Zahl in einen Text mit in jedem Fall 8-stelliger Ziffernfolge umgewandelt wird, ggf. eben mit führender 0 (aus 7042023 wird "07042023").

    • UweG
    • vor 11 Monaten
    • Gemeldet - anzeigen

    So ne große Sch... ist das nicht.
    Es gibt Möglichkeiten diese Textform in Datum umzuwandeln.
    Wichtig ist hierbei, das Die Form immer gleich ist. 8Zeichen, diersten beiden für den Tag, die weiteren beiden für den Monat und die letzten 4 für das Jahr.
    2342023 (23.4.2023) macht es schon komplizierter, 1042023 (1.04.2023)noch dazu ist eine grosse Herausforderung.
    Vorausschickend möchte ich auf die Ninox-Dokumentation zu den Ninox-Funktionen verweisen.
    Mit der Funktion date() kann reine Zahlenweerte oder Textwerte in ein Datumsformat umwandeln.
    date() verlangt Jahr, Monat, Tag. date(Jahr, Monat, Tag) ergibt ein gültiges Datum.
    Die Funktion substring() kann man nutzen um Zeichen aus einem String zu extrahieren.
    Für den Tag: substring("23042023",0,2)
    Für den Monat: substring("23042023",2,2)
    Für das Jahr: substring("23042023",4,4)

    Die endgültige Formel sähe dann so aus:
    date(substring("23042023",4,4), substring("23042023",2,2), substring("23042023",0,2))

    Dies kann man natürlich im Script noch etwas aufhübschen.
    Dazu verweise ich neben der Ninox.-Dokumentation auch auf die Ninox-Tutorials.

     

    Und Axel war schneller.

    • Steffen_Lehmann
    • vor 11 Monaten
    • Gemeldet - anzeigen

     

    Die Tabelle heißt:  ATC_PP_Report.csv

    Eine der Zellen:   EMF-Analyse Datum

    Frage: Was ist hier im Befehl noch falsch?
    Danke für euer Hilfe

      • Ninox-Professional
      • planoxpro
      • vor 11 Monaten
      • Gemeldet - anzeigen

      Steffen Lehmann Ups, sorry, mein Fehler. Habe im Eifer des Gefechts vergessen, den String mit number() wieder in eine Zahl umzuwandeln (passiert schon mal, wenn man's nur als Trockenübung macht):

      for i in select TABELLE do
         let myZ := format(i.ZAHL, "00000000");
         let myD := number(substr(myZ, 0, 2));
         let myM := number(substr(myZ, 2, 2));
         let myJ := number(substr(myZ, 4, 4));
         i.DATUM := date(myJ, myM, myD)
      end
      • Ninox-Professional
      • planoxpro
      • vor 11 Monaten
      • Gemeldet - anzeigen

      Was mir gerade noch auffällt: Deinem Skript nach würden Quell- und Zielfeld 'EMF-Analyse Datum' heißen. Das kann natürlich nicht sein. Daher noch mal: Du brauchst zusätzlich(!) zu dem Zahlenfeld ein neues Feld vom Typ 'Datum". Diesem gibst du einen eigenen Namen. Dann überträgst du mit dem Skript den Inhalt des einen Feldes (ZAHL) in das andere (DATUM).

      • Steffen_Lehmann
      • vor 11 Monaten
      • Gemeldet - anzeigen

      planox. pro 

      ok - probiere ich aus.

      • Steffen_Lehmann
      • vor 11 Monaten
      • Gemeldet - anzeigen

      Steffen Lehmann 

      nun gehts - DANKE für Eure Hilfe

       

Content aside

  • vor 11 MonatenZuletzt aktiv
  • 10Antworten
  • 48Ansichten
  • 3 Folge bereits