0

Vormonat

Hallo Zusammen,

ich benötige in meinen Tabellen, dass jeweils der aktuelle Monat (Juni 2018 )
und der Vormonat automatisch (Mai 2018) eingetragen wird.

Den aktuellen Monat erhalte ich mit Monat := format(now(), "MMMM YYYY")
Gibt es eine einfache Möglichkeit den Vormonat zu bekommen?

VG

7 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Etwa so:

    —-

    Vormonat:=format (date (year(today()),month(today())-1,1),"MMMM YYYY")

    —-

    Leo

    • Sven.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Funktioniert gut. Vielen Dank!

    • Roger_Schwab
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Guten Tag

    ich habe auch zum Filtern des Vormonates eine Frage - vor allem jetzt über Jahresende. Ich möchte für die Corona-Testung die Zeitgutschrift für Mitarbeitende, welche aus der Freizeit zum Test erscheinen addieren - und zwar für die Zeitabrechnung anfangs Monat. Hier meine Formel:

    let myName := Name;
    let myGeb := 'Geb._Datum';
    let myMon := month(today())-1;
    let myCnt := cnt(select Testung where Teilnehmer.Name = myName and Teilnehmer.'Geb._Datum' = myGeb and Freizeit = 1 and month(TestDatum) = myMon);
    myCnt * 'Arbeitsweg Min' / 3600000 + myCnt

    Wenn ich -1 weglasse erhalte ich schön den aktuellen Monat gefiltert, doch den Vormonat kriege ich nicht hin.

    Vielen Dank, freundliche Grüsse

    Roger Schwab

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Roger, die Funktion month() gibt einfach nur einen numerischen Wert zwischen 1 und 12 zurück, ohne Bezug zu einem bestimmten Jahr. Um den Vormonat kalendarisch korrekt zu ermitteln, muss man deshalb mit einem Datumswert arbeiten. Aus diesem wiederum lässt sich mit yearmonth() eine Kombination aus Jahr und Monat erzeugen, die man zur Filterung heranziehen kann. Die beiden betreffenden Zeilen könnten dann bspw. so aussehen:

     

    [...]
    let myMon := yearmonth(date(year(today()), month(today()) - 1, 1));

    let myCnt := cnt(select Testung where Teilnehmer.Name = myName and Teilnehmer.'Geb._Datum' = myGeb and Freizeit = 1 and yearmonth(TestDatum) = myMon);
    [...]

    • Roger_Schwab
    • vor 4 Jahren
    • Gemeldet - anzeigen

    sensationell, herzlichen Dank :-)

    noch eine Verständnisfrage: -1 ist klar, doch was macht die 1 am Schluss?

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die Funktion date() benötigt drei numerische Parameter: Jahr, Monat und Tag. Da der Tag in diesem Fall aber keine Bedeutung hat, wird einfach irgendein Wert eingesetzt, in diesem Fall halt die 1 für den Ersten des Monats. Es würde aber auch jede andere Zahl bis 28 funktionieren. 

    • Roger_Schwab
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank :-)