Ich würde sagen, Du kannst es machen wir Pfarrer Nolte: So oder so.
Hier die Variante mit LS:
Sub Click (Source As Button)
Dim ws As New NotesUIWorkspace
Dim docCurrent As NotesDocument
Dim vDTList As Variant
Dim vActDT As Variant
Set docCurrent = ws.CurrentDocument.Document
If Not (Isdate (docCurrent.DTList (0) )) Then
docCurrent.DTList = Now
Else
vDTList = docCurrent.DTList
vActDT = Now
vDTList = Arrayappend (vDTList, vActDT)
docCurrent.DTList = vDTList
End If
Call ws.ViewRefresh
End Sub
Zu beachten ist, das Arrayappend eine etwas fragile Konstruktion ist (ich habe dafür eine eigene Routine und verzichte komplett auf Arrayappend): Wenn Du nicht den Umweg über vActDT = Now gehst, sondern als zweiten Parameter gleich Now einsetzt, kannst Du Quincy (R5) oder dem NSD (R6) bei der Arbeit zusehen - Notes geht gnadenlos krachen. Vorteil: Wenn Du danach den Desktop komprimierst (ein Totalcrash ist eine hervorragende Möglichkeit dafür
), dann wird dieser anschliessend wieder wunderbar klein.. Nur nicht wundern, dass einige Icon längst gelöschter DBs wieder auftauchen
Und hier die kürzere Variante: Der Rückgriff auf die mächtigen und meist effektiven @functions via Evaluate:
Sub Click (Source As Button)
Dim ws As New NotesUIWorkspace
Dim docCurrent As NotesDocument
Dim vDTList As Variant
Dim vActDT As Variant
Set docCurrent = ws.CurrentDocument.Document
If Not (Isdate (docCurrent.DTList (0) )) Then
docCurrent.DTList = Evaluate ("@Now")
Else
docCurrent.DTList = Evaluate ("DTList : @Now", docCurrent)
End If
Call ws.ViewRefresh
End Sub
Anmerkung:
Ich habe für diese Snippets auf ErrorHandler verzichtet. Das ist m.E. für Prinzipbeispile dieser Art unnötig. Ausserdem hat jeder anständige Programmierer da sowieso eigene Standards.
Und: Die Variante mit Evaluate lässt sich mittels @Trim noch verfeinern und auf eine (eigentliche) Zeile eindampfen. Logisch. Für die Gegenüberstellung habe ich es aber mal so gelassen.
HTH,
Bernhard