[Gelöst] Datum in Schleife berechnen

30. August 2010 14:33

Hallo,

trotz intensiver Suche im Forum und der Onlinehilfe konnte ich keine Antwort auf mein Problem finden. Ich möchte in einer Schleife die Daten der kommenden 10 Wochen berechnen, um einen "Date Filter" auf der Tabelle Item mit jeder Schleife zu erneuern. Ich finde jedoch keine sinnhafte Formulierung für CALCDATE.

Code:
Wert1 := -7D;
Wert2 := 0D;
FOR i := 1 TO 10 DO BEGIN
   Date1 := CALCDATE(Wert1, TODAY);
   Date2 := CALCDATE(Wert2, TODAY);
   Start[i] := CALCDATE('<WD1>',Date1);
   Ende[i] := CALCDATE('<WD7>',Date2);
   Wert1 +=7;
   Wert2 +=7;


Da ich die Variable Wert hochzählen möchte, kann ich sie weder als Date noch Text formatieren. Ich habe sie aktuell als Integer definiert. Dann erhalte ich aber "Fehler in der Konstante", weil +7D kein Integer ist. Nehme ich nur +7, wird dies nicht von CALCDATE verarbeitet :evil: Wie kann ich das lösen, ohne die Zeitfilter für mehrere Perioden manuell in den Code zu schreiben?

Gruß

Bluefeet
Zuletzt geändert von Bluefeet am 31. August 2010 08:40, insgesamt 1-mal geändert.

Re: Datum in Schleife berechnen

30. August 2010 14:53

Bluefeet hat geschrieben:Da ich die Variable Wert hochzählen möchte, kann ich sie weder als Date noch Text formatieren.

Wieso? Versuch mal folgendes:
Code:
MyDate := MyDate + 7;


Für eine CALCDATE-Lösung wäre folgendes denkbar:
Code:
AnzahlTage := 7;
MyDate := CALCDATE(STRSUBSTNO('<+%1D>',AnzahlTage),ReferenzDatum);

Re: Datum in Schleife berechnen

30. August 2010 14:59

Wie wäre es mit

FOR i := 1 TO 10 DO BEGIN
Date1 := CALCDATE('<+'+Format(i-1)+'W>', TODAY);
Date2 := CALCDATE('<+'+Format(i)+'W>', TODAY);
Start[i] := Date1;
Ende[i] := Date2;
END;

Mfg

Ronald Koch

Re: Datum in Schleife berechnen

30. August 2010 16:05

Ist die Verwendung der Date-Tabelle nicht entspannter?

Re: Datum in Schleife berechnen

31. August 2010 08:40

Guten Morgen,

vielen Dank für die schnelle Hilfe. Ich habe mich für die Lösung von "rkoch" entschieden. Das war in meinem Fall am schnellsten umzusetzen.

Gruß
Bluefeet