AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitraum nach Datum eingrenzen

Ein Thema von Haraldo · begonnen am 2. Jan 2006 · letzter Beitrag vom 2. Jan 2006
Antwort Antwort
Haraldo

Registriert seit: 2. Jan 2006
5 Beiträge
 
#1

Zeitraum nach Datum eingrenzen

  Alt 2. Jan 2006, 13:03
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.



  Mit Zitat antworten Zitat
DelphiAndreas

Registriert seit: 25. Okt 2005
124 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zeitraum nach Datum eingrenzen

  Alt 2. Jan 2006, 13:07
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:
IncMonth liefert ein Datum zurück, das um die angegebene Anzahl von Monaten vor oder nach dem Ausgangsdatum liegt.

Unit

SysUtils

Kategorie

Datum und Uhrzeit

function IncMonth(const Date: TDateTime; NumberOfMonths: Integer = 1): TDateTime;

Beschreibung

IncMonth liefert den Wert des Parameters Date zurück, der um die Anzahl der in NumberOfMonths angegebenen Monate erhöht wurde. Wenn NumberOfMonths einen negativen Wert enthält, wird ein Datum zurückgeliefert, das um die angegebene Anzahl von Monaten zurückliegt.

Wenn der angegebene Monatstag größer ist als der letzte Tag des resultierenden Monats, wird der Tag auf den letzten Tag des Monats gesetzt. Die Uhrzeit des im Parameter Date angegebenen Tages wird in das Ergebnis kopiert.
Gruß
Andreas
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#3

Re: Zeitraum nach Datum eingrenzen

  Alt 2. Jan 2006, 14:35
Ich denke, er sucht eher: MonthsBetween Er will ja sein Datum nicht erhöhen, sondern die Differenz haben, falls ich ihn richtig verstanden habe

//edit1+2
Wie oft kann man sich eigentlich bei so wenig Text vertippen
  Mit Zitat antworten Zitat
Haraldo

Registriert seit: 2. Jan 2006
5 Beiträge
 
#4

Re: Zeitraum nach Datum eingrenzen

  Alt 2. Jan 2006, 15:24
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz