[GELÖST] Filter innerhalb von zwei Datumsangaben

5. Dezember 2007 11:50

Hallo zusammen, ich habe ein vermutlich triviales Problem:
In einer eigenen Projektverwaltung gibt es ein Startdatum und Enddatum. (Date)
Projekte können über mehrere Jahre laufen, z.B.:
Projekt 1: 15.03.2005 31.12.2008
Projekt 2: 01.12.2007 15.12.2007
Projekt 3: 01.06.2007 31.01.2008
Projekt 4: 01.01.2004 31.12.2006

Wie kann ich nun filtern, welche Projekte im Jahr 2007 in der Durchführung waren?
Wie mache ich das im Form?
(Die Lösung Startdatum <31.12.05 | Enddatum >31.12.04 als Filter für das Jahr 2005 finde ich unschön, denn die Eingabe ist zu mühsam)
Wie mache ich das im Report?

Könnt Ihr mir auf die Sprünge helfen?
Zuletzt geändert von eric_unplugged am 19. Dezember 2007 11:11, insgesamt 1-mal geändert.

5. Dezember 2007 12:12

Zumal dein Filter nicht korrekt ist. damit wurden z.B. auch alle Projekte mit gelistet die erst nach 2005 beginnen, denn der zweite Teil (Enddatum >=2005 ist dann ja auch erfüllt.
Richtig müsste der Filter für 2005 so heißen
(Startdatum <01.01.06) & (Enddatum > 31.12.04)

für 2007 also so:
(Startdatum <01.01.08) & (Enddatum > 31.12.06)



edit: FippTehler beseitigt
Zuletzt geändert von Michael Schumacher am 19. Dezember 2007 11:04, insgesamt 1-mal geändert.

5. Dezember 2007 12:19

Danke Michael, Du hast Recht, da hätte ich meinen Eintrag einmal mehr lesen sollen.
Es handelt sich um zwei Feldfilter, da wird kein Projekt gelistet, das nach 2005 beginnt. Die Pipe habe ich irreführend als UND verwendet.

Vermutlich ist dies schon der kürzeste Weg.

18. Januar 2008 09:49

Ein kleines Beispiel, wie der Date-Filter per Button gesetzt werden kann. Vielleicht habt Ihr ja ein paar nette Ratschläge, wie der Code auf vier Zeilen zu kürzen ist... :-)

Durationstart: Hier ist das Datum des Projektstarts hinterlegt
Durationstop: Hier ist das Ende der Projektdurchführung hinterlegt
Der Filter sorgt dafür, dass alle Projekte gefiltert werden, die sich im entsprechenden Jahr in der Durchführung befinden, ganz unabhängig davon, ob sie über mehrere Jahre laufen, oder nicht.

Liebe Grüße - Christian%

Auf dem Button müssen folgende LOKALE VARIABLEN angelegt werden:

Name - DataType - Length
Window - Dialog
txt - Text - 10
txtdate - Date

Und natürlich eine Text Constant:

windowtitel - schreib doch was Du willst


Dann dieser Code in OnPush:

Code:
Window.OPEN(
  '#1############################\\\\\\' +
  'Jahreszahl             #2#####', windowtitel, txt);
IF Window.INPUT(2,txt) =0 THEN ERROR('');
txt := '01.01.'+txt;
EVALUATE(txtdate,txt);
txtdate := txtdate + 365;
txt := FORMAT(txtdate);
SETFILTER(DurationStart,'<'+txt);
txtdate := txtdate -366;
txt := FORMAT(txtdate);
MESSAGE('Der Filter wurde gesetzt!');
SETFILTER(DurationStop,'>'+txt);
Window.CLOSE;

Stichworte:
Filter über Abfrage setzen