Monate aus Datumsbereich auslesen und in ein Mehrfachauswahlfeld importieren
Liebe Community!
Ich habe in einer Tabelle zwei Datumsfelder "Von" und "Bis" - ich möchte alle Monate die in dem Datumsbereich liegen inklusive Jahreszahl in ein Mehrfachauswahlfeld importieren. Ich bin mir sicher ich denk viel zu kompliziert und es ist vielleicht mit einem dyamischen Mehrfachauswahlfeld und der select funktion möglich, aber ich steh komplett an wie ich das in Abbilden kann, da bei jedem Eintrag andere Monate angezeigt werden müssen und ich da keine Extra-spalte machen kann in der Tabelle dafür.
Ich habe zuerst versucht das direkt zu lösen:
let startDate := 'Von';
let endDate := 'Bis';
let monthsList := [];
if startDate <= endDate then
let currentDate := startDate;
while currentDate <= endDate do
monthsList := monthsList + format(currentDate, "MMMM yyyy");
let newMonth := month(currentDate) + 1;
let newYear := year(currentDate);
if newMonth > 12 then
newMonth := 1;
newYear := newYear + 1;
end;
currentDate := date(newYear, newMonth, day(currentDate))
end;
end;
'abgerechnete Monate' := monthsList
Fehlermeldung in der letzten Zeile: not a numeric array.
Auch wenn ich versuche Zahlenwerte zu generieren kommt der gleiche fehler.
let startDate := 'Von';
let endDate := 'Bis';
let monthsList := [];
if startDate <= endDate then
let startMonth := year(startDate) * 12 + month(startDate);
let endMonth := year(endDate) * 12 + month(endDate);
for i in range(startMonth, endMonth + 1) do
let year := floor((i - 1) / 12);
let month := i - year * 12;
monthsList := monthsList + (year * 100 + month)
end;
end;
'abgerechnete Monate' := monthsList;
Was ich schon versucht habe:
Ich habe mir versucht die Monate zuerst in ein Textfeld mit , Trennung auszugeben und dann zu importieren. Selber Fehler.
Ich habe versucht mir die Monate einzeln in ein Textfeld (Monat_1 bis Monat_15) auszugeben - daran bin ich gescheitert.
Jetzt hab ich wahrscheinlich einfach einen Denkfehler und das was ich vorhabe funktioniert gar nicht oder ich übersehe was.
Aber vl. gibt es ja auch noch einen anderen Ansatz den ich gar nicht bedacht habe.
Mit lieben Grüßen und Danke schon mal im Voraus!
3 Antworten
-
Hallo Stefan. Wenn du month() benutzt, dann bekommst du unter umständen mehrfach den Wert, wenn ein Zeitraum Jahresüberschreitend und länger als 12 Monate ist. Das folgende Skript nimmt yearmonth(). Vielleicht passt es ja so für dich. Ich habe es gleich so geschrieben, dass du es in ein dynamisches Auswahlfeld einpassen kannst. Sonst nimmst du nur die ersten drei Zeilen.
let caption := unique(for i in range(Von, Bis, 86400000) do yearmonth(date(i)) end); let dynamicJSON := [{}][null]; for i in range(cnt(caption)) do let object := {}; setItem(object, "id", i + 1); setItem(object, "caption", item(caption, i)); dynamicJSON := array(dynamicJSON, [object]) end; dynamicJSON
-
Vielen Dank, das ist genau die Funktion die ich gesucht habe noch viel viel einfacher.
Content aside
- Status Answered
- vor 13 TagenZuletzt aktiv
- 3Antworten
- 20Ansichten
-
2
Folge bereits