In welchem Ordner befindet sich ein Dokument? – Teil 2/3

Inhaltsübersicht

— Teil 2/3 —
5. Praktisches Arbeiten mit den Folder References
5.1 Ordner des aktuellen Dokumentes anzeigen
5.2 Ansicht „Dokument“ | „Folder“
5.2.1 Beispiel für einen Agenten oder eine Aktionsschaltfläche
5.2.2 Postsave Script für neue Dokumente
5.2.3 View erstellen
5.2.4 Refresh-Button für die View

5. Praktisches Arbeiten mit den Folder References

5.1 Ordner des aktuellen Dokumentes anzeigen
Hier ein Beispiel-Script für eine Aktionsschaltfläche in einer Ansicht oder einem Ordner. Damit wird in einer Messagebox angezeigt, in welchen Ordnern sich das ausgewählte Dokument befindet:

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim szReference As String

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

Forall r In doc.FolderReferences
If r = „“ Then Goto Empty
szReference = r & Chr(10) & szReference
End Forall

While Not (doc Is Nothing)
Msgbox „Folder References: “ & Chr(10) & Chr(10) & szReference, 64, db.title
Set doc = collection.GetNextDocument(doc) ‚Nächstes Dokument
Wend

Exit Sub

Empty:
Msgbox „No References in this document….“, 64, db.title

End Sub

5.2 Ansicht „Dokument“ | „Folder“
In einer Ansicht die FolderReferences darzustellen ist leider nicht ohne Vorarbeit möglich, da @DBLookups etc. in Ansichten nicht erlaubt sind.

Daher müssen im Vorfeld in den jew. Dokumenten in ein separates Feld (im Beispiel unten wurde das Feld „FolderName“ gewählt) die Foldernamen geschrieben werden.

5.2.1 Beispiel für einen Agenten oder eine Aktionsschaltfläche

Dim session As New notessession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set dc = db.allDocuments

Set doc = dc.GetFirstDocument
Do While Not doc Is Nothing
If Not doc.FolderReferences(0) = „“ Then
doc.FolderName = doc.FolderReferences
Call doc.save (False,False)
End If
Set doc = dc.GetNextDocument(doc)
Loop

5.2.2 Postsave Script für neue Dokumente

Dim session As New notessession
Dim db As NotesDatabase
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim newuidoc As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set uidoc = uiws.CurrentDocument
Set doc = uidoc.Document

If Not doc.FolderReferences(0) = „“ Then
doc.FolderName = doc.FolderReferences
Call doc.save (False,False)
End if

5.2.3 View erstellen
Eine neue View erstellen mit 2 Spalten:

1. Spalte
z.B. Subject, aufsteigend sortiert

2. Spalte
FOLDERNAME (multi-value-separator: New line),
View-Eigenschaften: Lines per row: „9“

5.2.4 Refresh-Button für die View

Sub Click(Source As Button)
Dim uiws As New NotesUIWorkspace
Dim session As New notessession

Set db = session.CurrentDatabase
Set dc = db.allDocuments

Set doc = dc.GetFirstDocument
Do While Not doc Is Nothing
If Not doc.FolderReferences(0) = „“ Then
doc.FolderName = doc.FolderReferences
Call doc.save (False,False)
End If
Set doc = dc.GetNextDocument(doc)
Loop
Call uiws.ViewRefresh
End Sub

ACHTUNG: Dieser Refresh-Button ist keine Traum-Lösung, da alle Dokumente aktualisiert werden, was durchaus einige Minuten dauern kann!

Lesen Sie weiter im Teil 3 dieses Tipps.

Vielen Dank für diesen Tipp an:
Matthias (TMC)
eMail: atnotes@gmx.de

Notes/Domino Version: 5.x, 6.x