Aus der Lotus Support Services Technote #1221862:
Problem
Wenn Sie ein Administrator eines großen Netzwerks sind, müssen Sie möglicherweise darüber berichten, bei welchen Lotus Notes-Datenbanken „Soft Deletions“ (sanftes Löschen) aktiviert ist und bei welchen nicht. Gibt es eine Methode, um zu ermitteln, ob diese Datenbankeigenschaft aktiviert ist?
Lösung zum Ermitteln von „Soft Deletions“
Sie können mit LotusScript feststellen, ob bei einer Datenbank die Eigenschaft „Allow soft deletions“ aktiviert ist. Die Eigenschaft selbst wird über das Icon-Designelement im Feld $Flags verfolgt. Wenn das Feld $Flags den Wert 4 enthält, ist die Eigenschaft aktiviert. Um auf das Icon-Designelement zuzugreifen, können Sie die mit Notes/Domino 6.0 eingeführte Klasse NotesNoteCollection verwenden. Diese Klasse ermöglicht es, über eine Reihe von Boolean-Eigenschaften festzulegen, welche Typen von Designelementen in die Sammlung aufgenommen werden sollen. Um auf das Icon-Designelement zuzugreifen, verwenden Sie die Eigenschaft SelectIcon. Sobald das Designelement gefunden wurde, kann über dessen NoteID-Eigenschaft als NotesDocument darauf zugegriffen und der Inhalt des Feldes $Flags ausgelesen werden.
Um alle Datenbanken auf einem Server zu durchlaufen, können Sie die Klasse NotesDbDirectory verwenden. Hinweis: Bei dieser Vorgehensweise ist es wichtig, eine Fehlerbehandlung einzusetzen, um zu vermeiden, dass versucht wird, Datenbanken zu öffnen, für die der ausführende Benutzer keine ausreichenden Rechte besitzt.
Im folgenden Beispiel wird der Bericht in eine Textdatei geschrieben. Es gibt jedoch zahlreiche Möglichkeiten, die Informationen auszugeben, z. B. per E-Mail, über Dokumente oder Print-Anweisungen usw.
Der nachfolgende Agent sollte so konfiguriert sein, dass er für eine Auswahl von „None“ ausgeführt wird. Wenn der Agent gestartet wird, durchläuft er alle Datenbanken auf dem angegebenen Server, versucht jedoch nur Datenbanken im angegebenen Unterverzeichnis zu öffnen und auszuwerten. Der Code schreibt in eine Textdatei und meldet, bei welchen Datenbanken die Eigenschaft „Allow soft deletions“ aktiviert ist und bei welchen Datenbanken die Prüfung nicht möglich war, weil die nötigen Zugriffsrechte fehlten.
Um den Agenten zu verwenden, müssen Sie die folgenden Einträge im Code an Ihre Umgebung anpassen: mailpath, filename, servername. Diese Variablen finden Sie im Agenten unter dem Text „PARAMETERS TO CODE“.
HINWEIS: Der IBM Lotus Support kann diesen Code nicht an Ihre Umgebung anpassen. Der Code ist als Beispiel gedacht, wie diese Aufgabe mit LotusScript umgesetzt werden kann. Es wird dringend empfohlen, den Code zunächst in einer Nicht-Produktionsumgebung zu testen, bevor er auf einem Produktivserver eingesetzt wird.
Dim db As NotesDatabase Dim nc As NotesNoteCollection Dim icon As NotesDocument Dim filenum As Integer Dim pos As Integer Dim found As Integer Dim filename As String Dim strOutput As String Dim nid As String Dim servername As String Dim mailpath As String Dim strFlags As Variant 'PARAMETERS TO CODE 'Indicate mail subdirectory name mailpath = "mail" 'Text filename to write the output to. Writes to Notes program directory. filename = "SoftDeletions.txt" 'Server name (in canonical format): servername = "server name" Dim dbdir As New NotesDbDirectory(servername) filenum = Freefile() Open filename For Output As fileNum Print #filenum, "Soft Deletions" Set db = dbdir.GetFirstDatabase(DATABASE) While Not db Is Nothing 'Skip databases which you don’t have access to On Error 4060 Goto Error4060 'Check to see if this database is in the mail directory pos = Instr(db.FilePath, mailpath) If pos = 1 Then Call db.Open(servername, db.FilePath) Set nc = db.CreateNoteCollection(False) nc.SelectIcon = True Call nc.BuildCollection nid = nc.GetFirstNoteId Set icon = db.GetDocumentByID(nid) strFlags = icon.GetItemValue("$Flags") found = Instr(strFlags(0), "4") If found <> 0 Then Print #filenum, db.FilePath & " has soft deletions enabled." End If End If maildb=False GetNextDb: Set db = dbdir.GetNextDatabase() Wend Close filenum Exit Sub Error4060: 'If the code reaches here then the user does not have access rights. Print #filenum, db.FilePath & " incorrect rights to access!" Resume GetNextDb