Hallo,
probier es mal damit:
Delphi-Quellcode:
// Bedeutung Intervalle :
// 1 <-> täglich
// 2 <-> wöchentlich
// 3 <-> monatlich
// 4 <-> jährlich
case Intervall of
1: dNeuDatum := dDatum - 1;
2: dNeuDatum := dDatum - 7;
3: begin
DecodeDate(dDatum,nYear,nMon, nDay);
if nMon - 1 < 1 then begin
nYear := nYear - 1;
nMon := 12;
end else begin
nMon := nMon - 1;
end;
dNeuDatum := EncodeDate(nYear,nMon + 1,nDay);
end;
4: begin
DecodeDate(dDatum,nYear,nMon, nDay);
dNeuDatum := EncodeDate(nYear - 1 ,nMon,nDay);
end;
end;
Hier fehlt nun noch die Überprüfung in den Abfragen Monatlich und Jährlich, ob der Tag noch in dem neu Berechnetem Datum gültig ist.
also eine Abfrage der Art:
Delphi-Quellcode:
if nDay > DaysInAMonth(nYear,nMon) then begin
???
end;
Gruß Jörg