Domino 9 und frühere Versionen > ND6: Entwicklung

in Formelsprache Datumsdifferenz bilden und Ansicht reduzieren

(1/5) > >>

prong!:
Hallo ,

in einer Ansicht habe ich eine Spalte : Creationdate .

Ziel : ich möchte in der Ansicht nur Dokumente anzeigen , welche schon mindestens 3 Wochen alt sind...

Wie könnte ich nun den Ansichtsfilter so setzen, das nur die mehr als 3 wochen alten Dokumente ( Creationdate - 21Tage ) angezeigt werden ?

Beispiel:

Field Name: Creationdate
Data Type: Time/Date
Data Length: 8 bytes
Seq Num: 1
Dup Item ID: 0
Field Flags: SUMMARY

13.02.2007 17:03:00 CET


Unter Script würde dies gehen mit ( nur bezogen auf now , nicht auf creatindate) :

Dim dateTime As New NotesDateTime( Now )
Call dateTime.AdjustDay( -21 )

Aber lässt sich dieses auf die Ansicht anwenden oder sogar den Ansichtsfilter beeinflussen , und das vielleicht sogar in Formelsprache ?

Würde mich über Schubser in die richtige Richtung freuen ,

Gruß Dirk.

prong!:
Momentan denke ich darüber nach per Agent / alle Dokumente in der Ansicht zu aktualisieren und ein Feld 'Show' als Hilfe zu benutzen :

Wenn das Feld Show dann 1 sein sollte könnte man dies bequem per Formel oder AnsichtsFilter begrenzen....

Jedoch es klemmt...

noch habe ich hier :

If ( dateTimeNow => doc.creationdate(0) ) Then

einen Type mismatch....

wobei

Dim dateTimeNow As New NotesDateTime( Now )

und

Field Name: Creationdate
Data Type: Time/Date
Data Length: 8 bytes
Seq Num: 1
Dup Item ID: 0
Field Flags: SUMMARY

doch vom gleichen Typ sein müssten , oder ?


Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   
   Set db = s.CurrentDatabase
   
   Dim view As notesview
   
   Set view = db.GetView ("OpenReqs")
   
   Dim doc As notesdocument
   
   Set doc = view.GetFirstDocument
   
   While Not ( doc Is Nothing )
      
      Dim dateTime As New NotesDateTime( doc.creationdate(0) )
      Call dateTime.AdjustDay( -21 )
      
      Dim dateTimeNow As New NotesDateTime( Now )
      Call dateTimeNow.AdjustDay( -21 )
      
      If ( dateTimeNow => doc.creationdate(0) ) Then
         doc.show = "1"
      End If
      
      
   Wend
   
End Sub

prong!:
Hallo ,

hmm ja ok ,

Variant ist nicht gleich Time/Date....

Würde mir jemand helfen diese Formate nun so zu wandeln das Sie zum gleichen Typ werden und so vegleichbar werden ?

Danke ,

Gruß Dirk


____________________________________________________________

Now returns the current system date and time as a Variant of DataType 7 (Date/Time).


Field Name: Creationdate
Data Type: Time/Date
Data Length: 8 bytes
Seq Num: 1
Dup Item ID: 0
Field Flags: SUMMARY

dirk_2909:
Hallo Dirk

Ich würde das nicht über einen Agenten machen, der ständig Dokumente ändert, obwohl es unnötig ist.
Mach es über die Ansichtauswahl. Hier ein Beispiel für die Formel:


--- Code: ---_todayD := @TextToTime( @Right( "idc_Heute" ; "idc_" ) );
_todayE := @TextToTime(@Right( "idc_Today" ; "idc_" ));
_todayF := @TextToTime(@Right( "idc_Aujourd'hui" ; "idc_" ));
_today := @If(_todayD > [01.01.1900];_todayD;_todayE > [01.01.1900];_todayE;_todayF);

_dat := @Adjust( CreationDate ; 0 ; 0 ; 21 ; 0 ; 0 ; 0 ) ;

SELECT   Form = "fMyForm" & _today > _dat
--- Ende Code ---

Ich setzte das so in verschiedenen Anwendungen ein und klappt super. keine Performance einbußen, wie bei der Verwendung von @Today ;-)

prong!:
Hallo Dirk

Hört sich gut an , ich werde heute mal versuchen das einzusetzen/anzuwenden.

Vielen Dank erstmal.

Gruß Dirk

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln