Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Klafu am 22.07.09 - 15:44:16

Titel: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: Klafu am 22.07.09 - 15:44:16
Hallo,

in der ersten Spalte einer Anischt habe ich eine Formel (von Bernhard) zur Berechnung der Kalenderwoche

Code:
REM "Berechnung der Kalenderwoche des Tages >>Datum<<";
REM "Die Initialisierung von DAtum kann bspw. mit @Today erfolgen.";

Datum           := [DatumsFeld aus den Doks];
Wochenstart     := @Adjust(Datum; 0;0; -@Weekday(Datum)+@If(@Weekday(Datum)=1;-5;2); 0;0;0);
ErsterJanuar    := @Date(@Year(Wochenstart); 1; 1);
ErsterWochentag := @Weekday(ErsterJanuar);
MinutenProTag   := 60 * 60 * 24;
TagImJahr       := (Wochenstart - ErsterJanuar) / MinutenProTag;
Kalenderwoche   := 1 + @Round(TagImJahr / 7);
KW              := @If((ErsterWochenTag *= 2:3:4) & (Kalenderwoche = 53); 1; Kalenderwoche);

@Text(KW) + " KW"

Nun möchte ich es hinbekommen, das ich nur die Aktuelle KW und die darauffolgende KW in einer Ansicht seh.
wie bekomme ich das hin?
Meine bisherigen Versuche sind gescheitert

Danke,
Chris
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: ascabg am 22.07.09 - 15:46:59
Hallo,

Was sind denn Deine bisherigen Versuche?


Andreas
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: Klafu am 22.07.09 - 15:58:45
Ich dachte das ich es über eine eingebettet Ansicht schaffe und eben mit Bernhards Formel das aktuelle Datum bestimmen kann und dies dann einfach als Kriterium setzen kann. Ging aber nicht.
Dannach hab ich mich mit der Auswahlformel einer Maske beschäftigt, aber auch dort war ich leider weniger erfolgreich.

Chris
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: Klafu am 23.07.09 - 14:46:33
Hat niemand einen Tipp/Lösungsansatz.
Ich befürchte ich stehe nur auf dem Schlauch. Kann ja eigentlich nicht unmöglich sein.

Chris
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: koehlerbv am 23.07.09 - 20:17:20
Dein Ansinnen ist problemlos möglich. Wenn Du uns aber nicht sagst, wie Du was bisher gemacht hast, können und wollen wir auch nicht weiterhelfen (zumindest meine Kristallkugel versteckt sich bei einem Gewitter wie jetzt immer  ;D).

More input, more output!

Bernhard
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: Klafu am 24.07.09 - 08:51:15
Oh okay, dachte irgendwie das reicht  :)

Ich hab eine Maske; in der hab ich ein Datumsfeld welches der User setzen kann.
In meiner Ansicht hab ich dann in der ersten Spalte dein Script (Danke! ;)) zum errechnen der Kalenderwoche in der das Datum liegt (Die Spalte KW ist Kategorisiert).
Nun hätt ich gerne eine extra Ansicht für die User, in der nur die Dokumente der aktuellen KW und der kommende KW angezeigt werden.

Ich hoffe, es ist nun klarer  :)

Chris
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: BigWim am 24.07.09 - 09:31:56
Hallo Chris,

wenn Du die aktuelle KW UND die aktuelle KW +1 anzeigen lassen willst, geht das meiner Meinung nach nicht mit einer eingebetteten Ansicht, es sei Du nutzt ein mehr als "wildes" Konstrukt.

Du müßtest in der Ansicht als erste (versteckte) Spalte haben, die berechnet:
a) die Kalenderwoche vom aktuellen Datum berechnet
   (-> hier im Forum habe ich nichts Gutes über die Kombination von View und @Today gelesen)
b) die Kalenderwoche des Datums aus dem Dokument
c) Vergleicht KW:
   (-> in etwa Wenn (a=b oder a+1=b) dann 1 ansonsten 0)

Damit hättest Du ein Ansichtskritierum für die eingebettete Ansicht.


Mein Favorit wäre ja eher, dieses als Agent zu implementieren, der täglich (ab 0:01 ;-)) läuft und ein entsprechendes Flag im Dokument setzt, sodaß die View nur Dokumente mit diesem Flag anzeigt.

Markus
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: koehlerbv am 24.07.09 - 09:40:54
Für eine normale Ansicht musst Du doch nur in der Ansichtsauswahlformel die KW auf Basis des "Datum" in den Dokumenten berechnen und die KW auf Basis @Today. Das SELECT-Statement würde dann auf dem entsprechenden Vergleich der beiden KW-Werte basieren.

Sowie Du viele Dokumente in der DB hast, für das aber zäh und ärgert den Server.

Bernhard
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: Jürgen Schomann am 25.07.09 - 17:42:37
Nur ein Hinweis.
Die Formel für die Berechnung der KW ist nicht ganz korrekt. So liefert sie für den 31.12.2012 z. B. 53 statt 1. KW 2013:
Hier eine andere Formel:

Date := [<Datum>];
WeekThursday := @Adjust(Date; 0; 0; @If(@Weekday(Date) = 1; -3; -@Weekday(Date) + 5); 0; 0; 0);
WeekYear := @Year(WeekThursday);
January4Date := @Date(WeekYear; 1; 4);
FirstThursday := @Adjust(January4Date; 0; 0; @If(@Weekday(January4Date) = 1; -3; -@Weekday(January4Date) + 5); 0; 0; 0);
Week := ((WeekThursday - FirstThursday) / 86400) / 7 + 1;

@Prompt([Ok];"";@Text(Week) + ". KW, " + @Text(WeekYear))
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: gstueb am 25.07.09 - 20:41:30
Nun möchte ich es hinbekommen, das ich nur die Aktuelle KW und die darauffolgende KW in einer Ansicht seh.
wie bekomme ich das hin?

Wie Bernhard schon geschrieben hat, belastet eine Select-Formel in der Form

Code
Select KW=AktuelleKW | KW = NaechsteKW

den Server, weil durch die Datumsberechnung in der Ansichten-Formel die Ansicht nie wirklich aktuell ist und ständig neu berechnet wird.

Du könntest auch einen Agenten schreiben, der jeden Morgen läuft und alle Dokumente, die angezeigt werden sollen, entsprechend markiert und z.B. ein Feld Anzeigen = 1 setzt.

Oder Du erstellst in jedem Dokument ein Datumfeld "Heute", welches Du ebenfalls 1 x täglich per Agent (und bei der Neuanlage von Dokumenten) auf das aktuelle Datum setzt. Wenn Du anstelle von @today dann dieses Feld in der Auswahlformel verwendest, bekommt der Server keine Probleme mit der Ansicht.

Gruß,
Gregor
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: koehlerbv am 26.07.09 - 16:49:57
Danke, Jürgen! Ich habe tatsächlich nicht hinreichend getestet, nachdem jr mir eine kürzere Fassung meines eigenen Codes zur Verfügung stellte - so ist mir der Bug glatt entgangen.

Ich habe den entsprechenden Best Practice-Artikel "KW-Berechnung" (http://atnotes.de/index.php/topic,20457.msg128232.html#msg128232) jetzt geändert und Deinen Code eingestellt.

Bernhard
Titel: Re: Nur bestimmte Kalenderwoche anzeigen
Beitrag von: Klafu am 28.07.09 - 09:10:06
Vielen Dank für eure Antworten.
Bin nur leider gerade auf einer Schulung und kann deshalb da grad nicht weitermachen.
Sobald ich dazukomm werd ichs ausprobieren :)

Chris