Kommende Geburtstage der aktuellen Woche anzeigen
Liebe Community,
für mein Dashboard möchte ich mir gerne alle Geburtstage anzeigen lassen , die zwischen heute und den nächsten 7 Tagen fällig werden. Die für heute bekomme ich problemlos angezeigt, auch dir für morgen, aber die Zeitspanne, die alle Geburtstage umfasst bekomme ich nicht abgebildet. Mein Code lautet soweit wie folgt:
join(for i in select Mitarbeitende where format(Geburtstag, "DD.MM") = format(today() +1, "DD.MM") do
i.Vorname + " " + i.Nachname + " wird am " + format(i.Geburtstag, "DD.MM.") + " " + age(i.Geburtstag) + " Jahre alt "
end, "
")
Ich galube es ist nicht so schwer, nur stehe ich gerade auf dem Schlauch. Für einen Tipp wäre ich sehr dankbar.
13 Antworten
-
Ich habe 3 Spalten auf dem Dashboard. Heute, Morgen und Kommende.
Bei Kommende habe ich die Formel:
join(let myheute := today();
let myPersonen := (select Personen);
let myGeburtstagskinder := for k in range(0, 8) do
myheute := myheute + 1;
myPersonen[month(Geburtstag) = month(myheute) and day(Geburtstag) = day(myheute)].(" " + Vorname + " " + Name + " " + " ist am " + Geburtstag + " " + "geboren" + "
")
end;
myGeburtstagskinder, "
") -
Hallo Ralf,
ich würde die where Klausel mit der Ninox Funktion days(date1, date2) definieren.
select Mitarbeitende where days(today(), Geburtstag) >= 0 and days(today(), Geburtstag) <= 7
Alternativ zu Deinem Formelfeld könntest du die Datensätze auch in einer Ansicht darstellen. Bietet vielleicht mehr Möglichkeiten.
-
Hallo Zusammen, vielen dank für die schnellen Antworten.
Christoph leider scheint der Code nicht ganz zu funktionieren. Könnte es daran liegen, dass er bei der Funktion days auch die Jahre mit berechnet? Mein Feld Geburtstage hat das Format DD.MM.YYYY. Days gibt ja die Anzahl der Tage zurück und möglicherweise rechnet er dann von beispielweise 29.11.2022(heute) - 29.11.1984 (Geburtstag) und kommt auf 13.870 Tage
-
Oh, ja, da hast du natürlich recht. Du musst natürlich den Geburtstag auf das aktuelle Jahr transferieren. Etwas tricky wird es dann um den Jahreswechsel. Ich hab dir hier eine Formel zusammengestellt, die den nächsten Geburtstag berechnet. Am Besten du packst das in ein Formelfeld in der Tabelle Mitarbeitende und verwendest in der select Abfrage dann dieses Datum, anstatt dem Gebursdatum.
let bithdayThisYear := date(year(today()), month(Geburtstag), day(Geburtstag)); let nextBirthday := if days(today(), bithdayThisYear) >= 0 then bithdayThisYear else let bithdayNextYear := date(year(today()) + 1, month(Geburtstag), day(Geburtstag)); bithdayNextYear end; nextBirthday
-
Sieht ein bisschen wild aus, scheint aber zu funktionieren - auch jahresübergreifend
let rangeDat := for i in range(0, 7) do format(date(year(today()), month(today()), day(today()) + i), "DD.MM") end; let result := [""]; for i in rangeDat do for j in (select Mitarbeitende) order by Geburtstag do if i = format(j.Geburtstag, "DD.MM") then result := array(result, [j.Nachname + if format(j.Geburtstag, "DD.MM") = format(today(), "DD.MM") then " heute" else " wird am " + format(j.Geburtstag, "DD.MM.") end + " " + if format(j.Geburtstag, "DD.MM") = format(today(), "DD.MM") then age(j.Geburtstag) else age(j.Geburtstag) + 1 end + " Jahre alt"]) end end end; join(result[!= ""], " ")
-
Habt vielen herzlichen Dank, ihr seid Klasse! Habt eine tolle Vorweihnachtszeit
Content aside
- Status Answered
- vor 4 MonatenZuletzt aktiv
- 13Antworten
- 228Ansichten
-
6
Folge bereits