Autor Thema: Farbliche Markierung einer Spalte bei aktuellem Datum  (Gelesen 3135 mal)

Offline Kaljamam

  • Aktives Mitglied
  • ***
  • Beiträge: 234
  • Geschlecht: Männlich
Hallo zusammen,

ich bastle immer noch an meiner Jahresplanungs DB und soweit ist alles abgeschlossen. An einem kleinen Feature bin ich aber noch am überlegen, wie ich das hinbekomme.

Wie im Bild dargestellt, habe ich meine KWs. Die einzelnen Maßnahmen sind in den KWs farblich mit ROT gekennzeichnet.
ZIEL: ich würde gerne wie in KW 3 immer die aktuelle Woche automatisch farblich markiert haben. Das hat den Charme für den User, dass er sieht, in welcher KW er sich gerade befindet.

Ich habe bis jetzt in der Spalte folgende Formel:

standard := 255:255:255:255:255:255 ;
gelb := 255:255:194:255:255:194 ;
rot := 255:225:220:255:225:220 ;

@If
(KW3  = "KW3" ; rot ;
standard);


Hier der Teil, wo ich Hilfe benötige.
Zuerst einmal würde ich ein Agent schreiben, der in jedes Dokument in einem verstecktem Feld immer das aktuelle Datum schreibt. Das wäre Grundvoraussetzung.
Dann
@If
(hier müsste ich jetzt berechnen, wenn aktuelles Datum aus Dokument(z.B. 7.4.15) in der KW 15(6.4.15 - 12.4.15) liegt, dann gelb, sonst standard)

Mein Problem ist vor allem, das mein Know How nicht ausreicht die Prüfiung zu konstruieren, prüfe ob aktuelles Datum in der KW 15 liegt. Ich könnte in eine Variable zwar die Werte von KW 15 vergeben, aber die KW 15 für 2016 etc. sieht ja wieder anders aus...also was tun?

Jemand einen Tipp oder eine Idee? Vielleicht auch einen ganz anderen Lösungsansatz?

Beste Grüße
Christian

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Farbliche Markierung einer Spalte bei aktuellem Datum
« Antwort #1 am: 08.04.15 - 11:27:58 »
Vielleicht hilft dir dieser Eintrag weiter:
http://atnotes.de/index.php/topic,20457.0.html
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.881
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Farbliche Markierung einer Spalte bei aktuellem Datum
« Antwort #2 am: 08.04.15 - 12:02:20 »
Erstmal: Dein Ansatz, die Dokumente jede Nacht zu aktualisieren ist schonmal richtig, weil eine Abfrage auf @Today ist in Ansichten ein absolutes NOGO (ich dachte, wir hätten hier mal ein Best Practice zu dem Thema gehabt, finde es aber partout nicht wieder, aber eine Suche nach @Today und Ansicht im Forum liefert hunderte Ergebnisse mit dem "Warum".

Nur: Du schreibst Dir in die Dokumente NICHT die Information des heutigen Datums, sondern die Information, welche KW die aktuelle ist.

Ist das Dokument nicht im gleichen jahr wie @Today : KWtoday = 0
Ist das Dokument im gleichen jahr, dann KWToday = berechnete KW des heutigen Tages

Die Formel für ein Feld KWheute sieht dann in etwa so aus:
JahrMassnahme = das Jahr des Massnahmendokumentes
KWtoday = Kalenderwoche von heute, berechnet mit der Formel von cebolina

Code
@If( JahrMassnahme != @Year( @Today ); "KW0"; "KW" + @Text( KWtoday ) )

In Deiner Ansicht erweiterst Du dann einfach die Farbspalten folgendermassen:

Code
@If
(KW  = "KW3" ; rot ;
KWheute = "KW3" ; gelb ; 
standard);

KW wäre dann das Feld in Deinem Dokument, was die Kalenderwochen beinhaltet (kann so aussehen: "KW3" : "KW4" : "KW5")
KWheute ist das Feld, das ich Dir oben beschrieben habe.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Kaljamam

  • Aktives Mitglied
  • ***
  • Beiträge: 234
  • Geschlecht: Männlich
Re: Farbliche Markierung einer Spalte bei aktuellem Datum
« Antwort #3 am: 08.04.15 - 13:01:28 »
Perfekt vielen Dank!
Ich hatte zuerst den Thread von cebolina angeschaut und mit folgender Formel ein Agent über die Dokumente laufen lassen:

Datum := @Now;
@SetField("Datum"; Datum);

REM "Berechnung der Kalenderwoche des Tages >>Datum<<";
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;

@SetField("KW"; Week);


Wahrscheinlich zu kompliziert, aber er hat mir in das Feld KW dann die aktuelle KW reingeschrieben und so konnte ich das machen, was Tode jetzt auch im IF Code platziert hat.

Problem:
Die Spalte kann leider nur entweder oder anzeigen, d.h. habe ich eine Maßnahme, die für KW 15 geplant ist, dann ist diese "rot", bin ich gleichzeitig noch in der KW15 zieht gelb.(siehe Bild KW 15 Maßnahme "Test".


Lösung:
a). ich könnte natürlich ein Maßnahmen Dokument anlegen das aktuelle KW heißt und das wäre denke ich auch ausreichend.
b). in der openntf Anwendung Planboard schafft es der Programmierer über, wenn es mich nicht täuscht folgenden Befehl die Spaltenbezeichnungen zu ändern:
Call UpdateColumnHeaders( "01.PlanBoard",4 )   
Bild hänge ich auch an.
Das ist natürlich am aller schickesten.

FRAGE: ist es denn möglich mittels Wert aus dem Feld KW der Spaltenüberschrift zu sagen, du bist in roter Schrift, weil Bedingung KW = 15 zutrifft????

Das ist übrigens der Code aus der Scriptbibliothek(meine LS Kenntnisse sind nicht besonders):

Sub UpdateColumnHeaders( nameOfView As String,Offset As Integer )
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim vc As NotesViewColumn
   Dim dd As Variant
   Dim count As Integer
   Dim daycount As Integer
   Dim VarColor As String
   
   Set db = session.CurrentDatabase
   Set view = db.GetView(nameOfView)
   
   count = View.ColumnCount                                       'Count number of columns in the whole view
   daycount = (count-offset)/2  - 1                                    'Prepare the dayscounter (substract offset, then divided by 2 (due to extra color colums)).
   
   Do Until count = offset                                                             'Do until offset reached (see intialize)
      Set vc = view.Columns(count-1)                                           'Sets the column to be re-designed
      dd = Format$(Today()+ daycount,"Short Date")               'set dd to datecount,and force dd/mm/yyyy format
      
      vc.FontFace = "Webdings"                                       'Set default font/header options etc.
      vc.Alignment = VC_ALIGN_CENTER
      vc.FontPointSize = 16
      vc.HeaderFontPointSize = 10
      vc.HeaderFontStyle = VC_FONT_BOLD
      vc.HeaderAlignment = VC_ALIGN_CENTER   
      Select Case Weekday(dd)                                    'Select headerfontcolor by weekday
      Case 1 :  vc.HeaderFontColor = COLOR_RED                 'Set to red on Sundays
      Case 7 : vc.HeaderFontColor = COLOR_DARK_YELLOW    'Set to Dark yellow on saturdays
      Case   Else  :vc.HeaderFontColor = COLOR_BLACK         'use black on other days
      End Select
      vc.Title = Format$(dd,"dd")                                    'Rename the colum to 2-digit day number dd
      vc.Width = 1                                                   '(Re-)set width to re-align the view (just in case user messed it up)
      
      'Rewrite the date column formula to avoid use of @today (This avoids unneeded refresh of index)
      vc.Formula = {@If(CSjobVisitDate=[} & dd &{];@If(CSjobCategory="Time off - holiday";@Char(120);CSjobStatus="Tentative";@Char(99);CSjobCategory="Duty Phone";@Char(212);@Char(103));@Char(99))}
      
      count =count -1                                                 'Select the corresponding color column (next column)
      Set vc = view.Columns(count-1)                                           'Sets the column to be re-designed
      vc.Title = "C" & Format$(dd,"dd")                              'Rename the colums to C(olor)+daynum
      
      'Rewrite the color column formula that goes with the previous date-colum.
      Select Case Weekday(dd)                                    'Select background color by weekday
      Case 1,7 :  varColor = "242:242:242"                             'Set to lightgrey on weekends
      Case   Else  : varColor = "255:255:255"                        'use white on other days
      End Select
      vc.Formula = "varred := 255:0:0 ; vargreen := 0:222:0 ; varblue := 0:0:255; varyellow := 255:255:0; " & _
      "varpink := 225:27:213; varwhite :=" & VarColor & " ; vargrey :=222:222:222; varblack := 1:1:1; varapricot := 255:113:19; varplain := 0:0:0;" &_
      "@If(CSjobVisitDate=[" & dd & "];@If(CSjobCategory="& Chr$(34) &"Time off - holiday" & Chr$(34) &_
      ";varwhite:varapricot;CSjobCategory="& Chr$(34) &"Duty Phone"& Chr$(34) &";varwhite:varpink;varwhite:varred);ETA=Null|ETD=Null;varwhite:vargrey;ETA=<[" &_
      dd &"]&ETD=>[" & dd &"];varwhite:vargreen;varwhite:vargrey)"
      
      count =count -1                                                'Select the next column
      daycount = daycount -1                                       'and set the next day until offset is reached
   Loop
   
End Sub

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Farbliche Markierung einer Spalte bei aktuellem Datum
« Antwort #4 am: 08.04.15 - 13:53:27 »
KWtoday = Kalenderwoche von heute, berechnet mit der Formel von cebolina
Zuviel der Ehre.
Die Formel ist von koehlerbv
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz