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

Inhaltsübersicht

--- Teil 1/3 ---
1. Einleitung
2. Warum das ganze - Beispiele zum Einsatz
3. Erstkonfiguration
   3.1 Ansichten $FolderInfo und $FolderRefInfo
   3.2 FolderReferences aktivieren
4. Nachträgliches Setzen der Folder References

--- 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

--- Teil 3/3 ---
   5.3 Wiederherstellung der Dokumente
   5.4 Weitere hilfreiche Scripts
      5.4.1 Alle Ordner einer Datenbank löschen
6. Umsetzung der Beispiel-Scripts
7. Festgestellte Probleme


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