[GELÖST] Report : Datum Filtereingabe verwenden

24. Januar 2012 17:42

Hallo !
es geht um die Datumseingabe.
Die Filtereingabe hole ich mit GETFILTER das ist einfach.
Code:
RecArtikel.SETFILTER(Datumsfilter,Artikel.GETFILTER(Datumsfilter))

das hat gut geklappt :-D .
aber ich brauche das Jahr davor , egal wie die Eingabe ist
01.01.12..31.12.12 => 01.01.11..31.12.11
01.01.12..31.01.12 => 01.01.11..31.01.11
..31.01.12 => ..31.01.11
01.01.12.. => 01.01.11..
01.01.12 => 01.01.11
die Schwierichkeit liegt daran, alle Fälle unter einem Hut zu bringen. :roll:

Hat einer eine :idea:
Zuletzt geändert von solionte am 1. Februar 2012 14:48, insgesamt 2-mal geändert.

Re: Report : Filtereingabe verwenden

24. Januar 2012 17:50

Mit GETRANGEMIN und GETRANGEMAX kommst du an das kleinste und größte Datum, auf das gefiltert wird.
Nun musst du mit Hilfe von CALCDATE die Daten neu berechnen und diese zum Setzen des neuen Filters heranziehen.

Code:
NeuesDatum := CALCDATE('<-1Y>',AltesDatum);

Re: Report : Filtereingabe verwenden

25. Januar 2012 09:11

Moin Moin,
erstmal vielen lieben Dank für die schnelle Antwort.
Schade dass es nur Smilies gibt, und keine Blumen :wink:
ich sag noch Bescheid wie weit ich gekommen bin.
mit CALCDATE kann ich gut arbeiten, GETRANGEMIN/MAX kenne ich noch nicht.

mfg

GELÖST: Filtereingabe verwenden

25. Januar 2012 14:29

Gelöst
es läuft einwandfrei

Code:

 TEXT:= Artikel.GETFILTER(Datumsfilter);
//01.01.11..15.07.2011
 IF STRLEN(TEXT)=18 THEN BEGIN
  MINDATUM:=Artikel.GETRANGEMIN(Artikel.Datumsfilter);
  MAXDATUM:=Artikel.GETRANGEMAX(Artikel.Datumsfilter);
  Artfile.SETFILTER(Datumsfilter,'%1..%2',CALCDATE('<-1J>',MINDATUM),CALCDATE('<-1J>',MAXDATUM));
 END;
//01.01.11
 IF  STRLEN(TEXT)=8 THEN BEGIN
  EVALUATE(MINDATUM,TEXT);
  Artfile.SETFILTER(Datumsfilter,'%1',CALCDATE('<-1J>',MINDATUM));
 END;
// ..15.07.2011
 IF  STRLEN(TEXT)=10 THEN BEGIN
  IF STRPOS(TEXT,'..')<3 THEN BEGIN
  TEXT:=COPYSTR(TEXT,3,10);
  EVALUATE(MINDATUM,TEXT);
  Artfile.SETFILTER(Datumsfilter,'..%1',CALCDATE('<-1J>',MINDATUM));
//01.01.11..
  END ELSE BEGIN
  TEXT:=COPYSTR(TEXT,1,8);
  EVALUATE(MINDATUM,TEXT);
  Artfile.SETFILTER(Datumsfilter,'%1..',CALCDATE('<-1J>',MINDATUM));
 END;
END;
//Keine Datumsfiltereingabe
IF STRLEN(TEXT)=0 THEN
Artfile.SETFILTER(Datumsfilter,'%1..%2',CALCDATE('<-T1-1J>',WORKDATE),CALCDATE('<-1J+LJ>',WORKDATE));