Datum aus String extrahieren und in Datumsfeld zuweisen
Liebe Ninox-Experten,
ein Script will bei mir nicht so funktionieren:
let year := substring(Dateiname, length(Dateiname) - 14, length(Dateiname) - 10);
let month := substring(Dateiname, length(Dateiname) - 9, length(Dateiname) - 7);
let day := substring(Dateiname, length(Dateiname) - 6, length(Dateiname) - 4);
let Dokumentendatum := date(year(number(year)), month(number(month)), day(number(day)));
void
Ich habe einen Dateinamen, in dem an definierter Stelle vor dem Suffix ein Datum im Format 2021-05-11 steht. Dieses möchte ich in ein Datumsfeld setzen. Es wird korrekt ausgegenen, die String-Extraktion funktioniert also. Aber ich kann es nicht dem Datumsfeld zuweisen. Der Versuch mit der Convertierung als number war mein letzter. Jetzt weiß ich nicht mehr, was ich noch versuchen soll. Vielleicht hat ja von Euch einer eine Idee.
Dnake und LG
Arne
10 Antworten
-
Hi Arne. vielleicht so. Gruß Mirko
* Anzeige im Funktionsfeld
let year := substring(Dateiname, length(Dateiname) - 14, length(Dateiname) - 10);
let month := substring(Dateiname, length(Dateiname) - 9, length(Dateiname) - 7);
let day := substring(Dateiname, length(Dateiname) - 6, length(Dateiname) - 4);
date(number(year), number(month), number(day))
*
Zuweisung über einen Button oder Triggerlet year := substring(Dateiname, length(Dateiname) - 14, length(Dateiname) - 10);
let month := substring(Dateiname, length(Dateiname) - 9, length(Dateiname) - 7);
let day := substring(Dateiname, length(Dateiname) - 6, length(Dateiname) - 4);
let result := date(number(year), number(month), number(day));
Dokumentendatum := result
-
verrückt. Funktioniert. Ich meine, das hatte ich auch schon versucht. Aber anscheinend nicht, sonst hätte ich es schon gehabt. Danke!!
-
Hallo Arne und Mirko,
hatte bei mir einen ähnlichen Fall. Habe es so gelöst:---
Dokumentendatum := eval("date(" + concat(split(extractx(Dateiname, "\d{4}-\d{2}-\d{2}"), "-")) + ")", this)
---
Leo
-
Hi Leo. Das ist natürlich wesentlich eleganter. Eval() ist mir noch immer ein Rätsel und die Syntax nicht gerade intuitiv. Deshalb mein Dank für das schöne Beispiel, vielleicht schaffe ich dann noch mein Projekt komplexer select-Abfragen mit eval(). Eine winzige Veränderung habe ich noch vorzuschlagen, dann trifft Dein Code auch Datumsformate wie 2020-3-9, also einstellige Monate und Tage ohne vorangehende 0. Ausserdem habe ich noch aus split und concat replace gemacht, aber das ist eigentlich nicht nötig. Gruß Mirko
*
Dokumentendatum := eval("date(" + replace(extractx(Dateiname, "\d{4}-\d{1,2}-\d{1,2}"), "-", ",") + ")", this)
*
-
Hallo
habe hier ein ähnliches Problem
im Textfeld steht ein Datum in folgendem Format:
27-Jun-95
dies soll jetzt über Massendatenänderung in ein Datumsfeld übernommen werden
muß ich zuvor den Monat in eine Zahl umwandeln und das Jahr auf 4 Stellen setzen?
oder geht das auch direkt aus dem Textfeld
Gruß
Andreas
-
Hi Andreas. Script hilf nur, wenn es alles Jahre vor 2000 sind, sonst müßte man vorher kennzeichnen, welche Daten zu welchem Jahrhundert gehören. Felder in Großbuchstaben bitte noch anpassen. Gruß Mirko
for j in select TABELLE do let yearX := number(19 + extractx(j.TEXTFELD, "\d+(?=$)")); let dayX := number(extractx(j.TEXTFELD, "^\d+")); let monatArray := ["Jan1", "Feb2", "Mär3", "Apr4", "Mai5", "Jun6", "Jul7", "Aug8", "Sep9", "Okt10", "Nov11", "Dez12"]; let monthX := extractx(j.TEXTFELD, "[a-zA-Zä]+"); for i in monatArray do if extractx(i, "[a-zA-Zä]+") = monthX then j.(DATUM := date(yearX, number(extractx(i, "[0-9]+")), dayX)) end end end
-
...habe etwas vergessen, Script ist für einen Button
-
Hab noch folgendes eingefügt als 3.zeile
if yearX < 1925 then yearX := yearX + 100 end;
damit kann ich die Jahreszahlen die aus dem 2000 er sind um 100 Jahre erhöhen dann passt es
auch wenn ich den code mit extractx und "\d+(?=$)" nicht verstehe es funktioniert
Vielen Dank Mirko
Content aside
- vor 2 JahrenZuletzt aktiv
- 10Antworten
- 776Ansichten
-
2
Folge bereits