![]() |
Zeitraum nach Datum eingrenzen
Hallo, ich habe ein für mich sehr grosses problem bei dem ich dringend hilfe benötige,
ich habe: Datum1 = Beginn der Mitgliedschaft Datum2 = Begin der Abrechnung Datum3 = ende der Abrechnung folgende Tabelle muss berücksichtigung finden: 1 - 3 Monat der Mitgliedschaft = 15 € pro monat 4 - 6 Monat der Mitgliedschaft = 10 € pro Monat 7 - 12 Monat der Mitgliedschaft = 7,5 € pro Monat mehr als 12 Monate Mitgliedschaft = 5 € pro Monat wenn jemand seine Mitgliedschaft am 16.12.2004 begonnen hat und der Abrechnungsbegin der 1.1.2005 und das Abrechnungsende der 31.12.2005 ist. dann muss ich folgendes ergebniss haben: Abrechnungssatz 1 = vom 1.1.2005 bis 16.3.2005 = 15 € pro Monat = ca. 42 € Abrechnungssatz 2 = vom 17.3.2005 bis 16.6.2005 = 10 € pro Monat = ca. 30 € Abrechnungssatz 3 = vom 17.6.2005 bis 15.12.2005 = 7,5 € pro Monat = ca. 45 € Abrechnungssatz 4 = vom 16.12.2005 bis 31.12.2005 = 5 € pro Monat = ca. 2,5 € mir ist soweit alles klar und ich habe es auch schon geproggt, nur ein punkt allerdings der wichtigste fehlt mir. wie kann ich vom datum1 die jeweilige differrenz in monaten dazurechnen. kann mir jemand aufs Fahrad helfen. Bitte habe es sehr eilig. :shock: |
Re: Zeitraum nach Datum eingrenzen
Ich würde entweder mit FormatDateTime das Datum auf den Monat kürzen, dazuaddieren und wieder zurückrechnen oder mich mal schlau machen, ob es vielleicht eine Funktion gibt, die ähnlich dem VB DateAdd ist.
okay, es heißt IncMonth Zitat:
Andreas |
Re: Zeitraum nach Datum eingrenzen
Ich denke, er sucht eher:
Delphi-Quellcode:
Er will ja sein Datum nicht erhöhen, sondern die Differenz haben, falls ich ihn richtig verstanden habe ;-)
MonthsBetween
//edit1+2 Wie oft kann man sich eigentlich bei so wenig Text vertippen :roll: |
Re: Zeitraum nach Datum eingrenzen
Vielen Dank für die schnelle Antwort. ich habe mich umständlich ausgedrückt. IncMonth hilft schon erheblich ist aber noch nicht mein hauptproblem. ich versuche es nochmal zu umschreiben.
if incMonth(Datum1,3) < Datum2 then begin Abrechnungssatz1Begin := Datum2 Abrechnungssatz1Ende := incMonth(Datum1,3); end; if (incMonth(Datum1,3) > Datum2) and (IncMonth(Datum1,6) < Datum2) then begin Abrechnungssatz2Begin := Abrechnungsdatensatz1Ende Abrechnungssatz2Ende := incMonth(Datum1,6); end; if (incMonth(Datum1,6) > Datum2) then (incMonth(Datum1,12) < Datum2) begin Abrechnungssatz3Begin := Abrechnungsdatensatz2Ende Abrechnungssatz3Ende := incMonth(Datum1,6); end; if incMonth(Datum1,12) < Datum2 then begin Abrechnungssatz4Begin := Abrechnungsdatensatz3Ende Abrechnungssatz5Ende := incMonth(Datum1,12); end; so gut so schlecht, bei meinem Beispiel benötige ich 4 Abrechnungssätze wie beschrieben, wenn aber Datum1 = 18.5.2004 ist dann sind es nur zwei Abrechnungssätze Abrechnungssatz 1 = vom 1.1.2005 bis 18.5.2005 = 10 € pro Monat = 54 € Abrechnungssatz 2 = vom 19.5.2005 bis 31.12.2005 = 5 € pro Monat = ca. 32 € wenn aber Datum1 = 18.5.2003 ist dann ist es nur 1 Abrechnungssatz Abrechnungssatz 1 = vom 1.1.2005 bis 31.12.2005 = 5 € pro Monat = 60 € vielleicht wird jetzt mein problem deutlicher. Monthbetween ist zwar eleganter aber löst mein problem auch noch nicht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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