In welchem Ordner befindet sich ein Dokument? – Teil 1/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

1. Einleitung
Werden Dokumente in Folder (Ordner) verschoben, so ist es erst einmal nicht möglich, im Dokument zu sehen in welchem Folder es liegt.

Seit R5 gibt es allerdings die FolderReferences property, mit dieser ist es z.B. möglich herauszufinden, in welchem Folder welches Dokument liegt. Dabei werden automatisch in Felder des Dokumentes die jew. Ordner-Referenzen geschrieben, sobald ein Dokument in einem Ordner abgelegt wird.

2. Warum das ganze – Beispiele zum Einsatz
– Schablonenupdate oder sonstige Modifikationen am Mailfile
In der Vergangenheit ist wohl leider schon vielen Administratoren bei einem Releasewechsel (und dadurch u.a. verbunden ein Schablonenwechsel des Mailfiles) passiert, dass vorher sauber in Ordner abgelegte Dokumente nun plötzlich „verschwunden“ sind und nur noch in der $All – Ansicht sichtbar.

– Mehrere (Mail-)Datenbanken zu einer zusammenführen
Bisher war es sehr aufwändig, z.B. die Dokumente von Mailfile A strukturiert in Mailfile B zu übernehmen. Auch hier kann FolderReferences wertvolle Dienste erweisen.

– Sicherheit durch Wiederherstellbarkeit
Es können beispielsweise nicht reproduzierbare Fehler auftreten, bei denen z.B. Dokumente plötzlich nicht mehr in den Ordnern erscheinen. Auch hier besteht dann die Möglichkeit, per Mausklick alles wieder herzustellen.

3. Erstkonfiguration

3.1 Ansichten $FolderInfo und $FolderRefInfo
Grundsätzlich ist ‚Folder References‘ in jeder Datenbank ab R5 möglich. Allerdings sind hierzu zwei versteckte Ansichten der R5 oder R6 – Mailschablone nötig:
$FolderInfo
$FolderRefInfo
Diese Ansichten müssen in die Datenbank, in der ‚Folder References‘ verwendet werden soll, kopiert werden.

3.2 FolderReferences aktivieren
Die FolderReferences sind grundsätzlich deaktiviert. Eine Aktivierung in einer Datenbank muss per Lotus Script erfolgen; eine Datenbank-Option, in der man per Mausklick die FolderReferences aktivieren kann, gibt es nicht!

Hier ein Beispiel-Script, welches man z.B. in eine Aktionsschaltfläche aufnehmen kann:

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase

If db.FolderReferencesEnabled Then
If Messagebox ("Folder References are enabled." & Chr(10) & Chr(10) _
& "Do you want to disable the Folder References?" ,1 + 32,db.title) = 1 Then
db.FolderReferencesEnabled = False
Messagebox "Disabled Folder References now.....", 64, db.title
Else
Exit Sub
End If
Else
If Messagebox ("Folder References are disabled." & Chr(10) & Chr(10) _
& "Do you want to enable the Folder References?" ,1 + 32,db.title) = 1 Then
db.FolderReferencesEnabled = True
Messagebox "Enabled Folder References now.....", 64, db.title
End If
End If
End Sub

Eine weitere Möglichkeit wäre es, „db.FolderReferencesEnabled = True“ generell im Postopen-Ereignis der Datenbank zu platzieren bzw. folgende If-Abfrage zu erstellen:

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase

If db.FolderReferencesEnabled Then
Exit Sub
db.FolderReferencesEnabled = True
End If
End Sub

4. Nachträgliches Setzen der Folder References
Im Internet wird oftmals fälschlicherweise die Meinung vertreten, es wäre nicht möglich, die Folder References nachträglich zu setzen.

Hier ein Beispiel-Script, welches man z.B. in eine Aktionsschaltfläche aufnehmen kann:

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim vec As NotesViewEntryCollection
Set db = session.CurrentDatabase

If Not Messagebox ("Do you really want to create references of all docs in all folders?" ,1 + 32,db.title) = 1 Then
Exit Sub
End If

If Not db.FolderReferencesEnabled Then
db.FolderReferencesEnabled = True
End If

Forall v In db.Views
If v.isFolder Then
Set vec = v.AllEntries
Call vec.PutAllInFolder( v.Name )
End If
End Forall
Messagebox „Folder References are created…“, 64, db.title
End Sub

Dadurch werden nachträglich alle Folder References erzeugt.

Geschwindigkeit:
Mit einem Mailfile mit 240 Ordnern und 182.000 Dokumenten: 22 Minuten.
Der Test wurde durch Eknori auf einem Server durchgeführt:
– Client 6.5 de auf einem Laptop mit P4 3.2GHz / 768 MB Ram
– Server 6.5 en auf P4 3.2 GHz / 2 GB Ram
– Netzwerk Glasfaser 1GBit

Lesen Sie weiter im Teil 2 dieses Tipps.

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

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