[gelöst]letzten Tag des Monats feststellen

11. Februar 2009 12:07

Hallo zusammen,

ich bin gerade dabei, alle Sachposten in eine externe Tabelle zu exportieren.
Dabei möchte ich das so handhaben, dass ich die Buchungsdaten je Monat zusammenfasse.

Habe ich jetzt beispielsweise das Datum 13.02.2005, so möchte ich den letzten Tag des Monats haben, in diesem Fall also den 28.02.2005.
Die Tabelle "Datum" habe ich bereits gefunden und versuche sie zu verwenden.

Hier mein bisheriger Code (Test):

Code:
t := 130205D;
Datum.Periodentyp := Periodentyp::Monat;
Datum.SETRANGE(Periodenanfang,t);
IF Datum.FIND('-') THEN BEGIN
  MESSAGE(FORMAT(Datum.Periodenende));
END;


Als Ausgabe erhalte ich dann U13.02.05, sprich das Ultimodatum.

Wenn ich das Datum.Periodenende jetzt mit einem NORMALDATE formatiere, verschwindet lediglich das U davor, das Datum bleibt aber gleich.

Wie stell ich das also an, dass ich immer den letzten Tag des jeweiligen Monats feststelle?


Bin für jede Hilfe dankbar :)



Gruß
Danny
Zuletzt geändert von dannyt am 11. Februar 2009 12:36, insgesamt 1-mal geändert.

Re: letzten Tag des Monats feststellen

11. Februar 2009 12:20

dazu gibt es die Variable Clacldate

Code:
CALCDATE('-LM',DeinDatum);  //Monatsanfang
CALCDATE('+LM',DeinDatum);  //Monatsende

CALCDATE('-LJ',DeinDatum);  //Jahresanfang
CALCDATE('+LJ',DeinDatum);  //Jahresende


mfg Michael

Re: letzten Tag des Monats feststellen

11. Februar 2009 12:22

Hallo Michael,

das geht ja einfacher als ich dachte :-)

Vielen Dank für die schnelle Antwort!


Gruß
Danny

Re: letzten Tag des Monats feststellen

11. Februar 2009 12:26

Bitte verwendet CALCDATE immer in der Multilanguage-Version:

Code:
CALCDATE('<-CM>',DeinDatum);  //Monatsanfang
CALCDATE('<+CM>',DeinDatum);  //Monatsende

CALCDATE('<-CY>',DeinDatum);  //Jahresanfang
CALCDATE('<+CY>',DeinDatum);  //Jahresende


Der Code mit den deutschen Bezeichnern und ohne <> würde sonst bei einer Mandantensprache <> Deutsch zu einem Laufzeitfehler führen.