ACLs programmieren - Teil 4

Der Code für die Änderungen ist relativ lang, weil eine Reihe von Feldern etwas speziellere Verarbeitungsschritte benötigen. Er findet sich in Listing 1. Zunächst wird mit

Dim sess As New NotesSession

eine neue Session erstellt. Anschließend muss der Zugriff auf die aktuellen Informationen in der Maske vorbereitet werden. Dazu werden die Anweisungen

Dim ws As NotesUIWorkspace
Dim uidoc As NotesUIDocument

verwendet. Das ist erforderlich, um auf diese Informationen zugreifen zu können. Der Arbeitsbereich, also die aktuelle Arbeitsumgebung, wird anschließend mit

Set ws = New NotesUIWorkspace

geöffnet. Dort befindet sich ein Dokument in der aktuellen Maske. Dieses Dokument kann nun mit

Set uidoc = ws.CurrentDocument
Call uidoc.Save

gesichert werden. Es wäre grundsätzlich auch denkbar, dieses Dokument zunächst zu verarbeiten und dann zu sichern. Der größte Vorteil dieses Weges ist, dass man auf diese Weise den größten Teil des Codes unverändert auch für die andere noch ausstehende Schaltfläche verwenden kann. Das wird direkt im Anschluss deutlich, wenn auf die aktuelle Datenbank zugegriffen wird. Dazu erfolgt zunächst wieder eine Dimensionierung von Variablen:

Dim doclist As NotesView
Dim doc As NotesDocument
Dim dbcurr As NotesDatabase

Im Anschluss wird auf die aktuelle Datenbank zugegriffen, die ja in jedem Fall geöffnet ist, und die Anweisung

Set dbcurr = sess.CurrentDatabase

ausgeführt. Innerhalb der Datenbank kann nun auf das letzte Dokument in der Standardansicht zugegriffen werden:

Set doclist = dbcurr.getview("Standardansicht")
Set doc = doclist.GetLastDocument

Der Zugriff ist in dieser Form möglich, weil die Standardansicht nach der Reihenfolge der Erstellung der Dokumente sortiert ist. Damit muss man nicht lange in der Datenbank nach dem gewünschten Dokument suchen. Dieses Konzept funktioniert nicht bei allen Anwendungen, ist für diese Lösung aber ausreichend.

Im nächsten Schritt muss auf die Datenbank zugegriffen werden, für die die ACL angepasst werden soll. Dazu wird die Anweisung

Dim db As New NotesDatabase("domino7test1",
doc.datei(0))

verwendet. Der Server ist immer gleich, weil sich ja auch der Datenbank-Katalog, der für das Listenfeld in der Maske verwendet wird, von diesem Server gelesen wird. Die Datei wird aus dem Dokument übernommen, wobei der Zugriff auf das erste Element in einem Array erfolgen muss, da die Werte beim Zugriff als Array behandelt werden. Der erste Wert in einem Array ist immer 0. Damit wird die Datenbank nun geöffnet.

Bild 1: Die modifizierte Maske.
Bild 1: Die modifizierte Maske.