![]() |
Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Hallo Delphi Freunde
Ich habe ein Problem fortlaufende Monate zu berechnen. Beispiel: Vertragsbeginn am 1.8.2014 Vertragsende 1.8.2015
Delphi-Quellcode:
function monatsberechnung(monatfeld: Integer): TDate;
var jahr, monat, tag: word; Tage : Integer; begin decodedate(now, jahr, monat, tag); tage := tag; jahr := jahr ; monat := monat-1; tag := tag - tage+2; result := encodedate(jahr, monat + monatfeld, tag) - 1; end;
Delphi-Quellcode:
Jetzt lasse ich eine Schleife laufen:
function letztertagdesmonats(plusminusmonat : Integer): TDate;
var y, m, d: word; begin decodedate(now, y, m, d); m := m + 1; if m > 12 then begin y := y + 1; m := m; End; result := encodedate(y, m + plusminusmonat, 1)-1 ; end;
Delphi-Quellcode:
ich bekomme folgende Datum Werte berechnet:
for i := 1 to Anzahl do
Form1.rzstringgrid1.Cells[1,i] := DateToStr(monatsberechnung(2))+' - ' + DateToStr(letztertagdesmonats(i)) ; 01.09.2014 - 30.09.2014 01.10.2014 - 31.10.2014 01.11.2014 - 30.11.2014 Danach bekomme ich eine Nachricht: Ungültiges Argument zum Codieren des Datum Was mache ich falsch ... ich verzweifel langsam :( |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Vielleicht wäre es ganz nützlich, in
Delphi-Quellcode:
mal zu überprüfen, ob da für den Monat ein Wert > 12 herauskommt:
function monatsberechnung
Delphi-Quellcode:
Nachfrage:
monat := monat + monatfeld;
if monat > 12 then begin monat := monat - 12; Inc(jahr) end; result := encodedate(jahr, monat, tag) - 1; Worum geht's eigentlich? Vielleicht gibt es eine einfachere Lösung für die eigentliche Aufgabe? |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Hallo-
Die Methoden
Delphi-Quellcode:
und
StartOfTheMonth(TDateTime)
Delphi-Quellcode:
kennst du aber, oder?
EndOfTheMonth(TDateTime)
|
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Jupp.
Wieviele Monate hat nochmal ein Jahr? Und bei mehr ist das "Datum" Natürlich ungültig. Also mußt du, bei dieser Vorgehensweise, den Monateswert (z.B. via MOD) auf 1 bis 12 begrenzen und den Überlauf (DIV) zum Jahr dazurechnen. @Perlsau: Das geht dann aber auch wieder nur bis 24. :zwinker: Entweder als Schleife, oder mathematisch. ![]() |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Liste der Anhänge anzeigen (Anzahl: 1)
Ich brauche den Abrechnungszeitraum des monats Beispiel: 01.08.2014 - 31.08.2014 usw.
für ein Stringgrid. |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Was benötigst du da? Die Anzahl der Tage?
Zitat:
|
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Schau dich mal, wie von Günther schon genannt, in den
![]() |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
In den beiden letzten Posts, vor deiner letzten Antwort, stehen alle Funktionen, welche man für alle Datums- und Zahlenwerte auf deinem Bild benötigt. :roll:
|
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
erste tag des monats und der letzte tag des monats ...
aber er rechnet nur bis zum November ... dann kommt die fehler meldung :( |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Zitat:
Auch ein Blick in ![]() |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Zitat:
Wenn du den ersten und den letzten Tag eines Monats benötigst, ist das einfach: der erste Tag ist immer der 1. Der letzte Tag ist der ![]() ![]() |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
PS: Dein letztertagdesmonats ist auch noch defekt.
Schau mal genau in deinen IF-Block rein, genau auf den Monat. (oder verwende einfach die vorhandenen funktionierenden Funktionen der RTL) Genau deswegen knallt es bereit im Dezember. Und dann nochmal das bereits genannte Problem, ab der 13. Monatsmiete, da ebenfalls über 12 Monate als Differenz. Alle Probleme würde man auch gut durch Debuggen finden, indem man sich mal anschaut, was bei den Berechnungen eigentlich raus kommt. |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Hallo,
das hier ist doch viel rumgerechnet um nichts:
Delphi-Quellcode:
Tag ist so ja immer 2
function monatsberechnung(monatfeld: Integer): TDate;
var jahr, monat, tag: word; Tage : Integer; begin {...} tage := tag; {...} tag := tag - tage+2; {...} end; |
AW: Fortlaufende Monat Aufzählung Stoppt im Monat Dezember ???
Erster Tag des Monats (Tag 1 vom aktuellen Monat und Jahr)
Delphi-Quellcode:
Letzter Tag des Monats (ein Tag vor dem 1. Tag des nächsten Monats)
function GetFirstDateOfMonth( ADate : TDate ) : TDate;
var LYear, LMonth, LDay : word; begin DecodeDate( ADate, LYear, LMonth, LDay ); Result := EncodeDate( LYear, LMonth, 1 ); end;
Delphi-Quellcode:
function GetLastDateOfMonth( ADate : TDate ) : TDate;
begin Result := IncDay( IncMonth( GetFirstDateOfMonth( ADate ), 1 ), -1 ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz