Hallo zusammen,
ich seh mal wieder den Baum vor lauter Wäldern nicht...
Ich habe in einer Datenbank zur Verwaltung von Verträgen ein Hauptdokument in dem alle relevanten Informationen zu dem jeweilgen Vertrag stehen. Ab dem nächsten Jahr sollen die jeweils verantwortlichen Abteilungsleiter 1-2x pro Jahr eine Leistungsbeurteilung für die Verträge vornehmen. Die Beurteilungen werden als Tochterdokumente erzeugt (per Schaltfläche im Hauptdokument), so dass man in einer entsprechenden Ansicht eine Historie der bereits erfolgten Beurteilungen abrufen kann.
Da die Tochterdokumente beim Speichern Werte in das Hauptdokument zurückschreiben möchte ich sicherstellen, dass das Hauptokument - sofern es vor der Leistungsbeurteilung noch bearbeitet wurde - aktualisiert, gespeichert und in den Lesemodus versetzt wird. Das klappt auch soweit. Nur bekomme ich dann eine Fehlermeldung beim Erzeugen des Tochterdokuments (bei der Verarbeitung der rot markierten Zeile im Code):
Notes-Fehler - Der angegebene Befehl ist vom Arbeitsbereich aus nicht verfügbar.
Wird das Hauptdokument im Lesemodus geöffnet und dann der Schalter betätigt, wird der Code ohne Fehler verarbeitet.
Folgenden Code habe ich in der Schaltfläche verwendet:
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim uirespdoc As NotesUIDocument
Dim checkleiter As Variant
Const checkMacro$ = "@IsMember(vertrag_verantwortlich_leiter;@UserNamesList)"
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
If uidoc.EditMode = True Then
Call uidoc.Refresh
Call uidoc.Save
uidoc.EditMode = 0
End If
checkleiter = Evaluate(checkMacro$, doc)
If checkleiter(0) = 1 Then
Set uirespdoc = workspace.ComposeDocument( "", "", "frm_leistung" )
Call uidoc.Close
Else
Msgbox "Die Leistungsbeurteilung muss vom verantwortlichen Leiter durchgeführt werden.", 32, "Hinweis"
Exit Sub
End If
Gruß
Dirk