Hallo,
ich bin auf ein Problem gestoßen, dass mir nun wahrscheinlich das Wochenende vermiesen wird, weil mir keine Lösung einfallen will.
Ausgangssituation:Wenn ich in einer Datenbank ein Dokument öffne, lege ich in einer zweiten Datenbank ein SperrDoc an. Im QueryOpen des uiDoc wird anhand der doc.UniversalID geprüft, ob in der Sperrsatz-DB ein SperrDoc mir einer solchen UNID vorhanden ist. Wenn ja, kann bekommt der User einen Hinweis und kann das Dokument nicht öffnen.
Im QueryClose wird das SperrDoc dann über die UNID gefunden und gelöscht.
Problem:Das Dokument ist geöffnet, das SperrDoc erstellt. Nun möchte ich per Masken-Knopf eine Dokumentenverknüpfung in ein RichTextFeld (RTF) einfügen. Das Knopf-Scribt ruft die Function DokLnkEinf in einer Scriptlibrary auf. Das klappt auch alles wunderbar.
Um nun das neue bzw. geänderte RTF nun auch im uiDoc sichtbar zu machen, wird zum Schluss des Knopf-Scripts das Hintergrund-Dokument gespeichert, das uiDoc geschlossen, um dann gleich neu geladen zu werden. Das klappt auch. Aber:
Beim Schließen des uiDocs wird der QueryClose ausgeführt und das SperrDoc gelöscht. Beim erneuten Öffnen des uiDocs wird aber der QueryOpen nicht wieder ausgeführt, das heißt, es wird kein neues SperrDoc angelegt. Warum?
(Declarations)
Dim ws as NotesUIWorkspace
Dim doc as NotesDocument
Dim uiDoc as NotesUIDocument
Sub Initialize
Set ws = New NotesUIWorkspace
End Sub
Function DokLnkEinf
Set uiDoc = ws.CurrentDocument
Set doc = uiDoc.Document
...
Call doc.Save(True, False)
Call uiDoc.Close(True)
Set uiDoc = ws.EditDocument(True, doc)
End Function
Ich habe es auch schon mit Löschen des uiDocs versucht oder mit dem Nachlesen des Docs aus der DB.
DocUID = doc.UniversalID
Call doc.Save(True, False)
Call uiDoc.Close(True)
Set uiDoc = Nothing
Set doc = db.GetDocumentByUNID(DocUID)
Set uiDoc = ws.EditDocument(True, doc)
Auch hier wird das angezeigte Doc geschlossen, und das Doc in einem neuen Reiter geöffnet. Das sieht man, wenn das bearbeitet Doc, das seinen Reiter zwischen anderen Reitern hatte, mit einem mal im letzten Reiter angezeigt wird.
Auch ein zweites uiDoc, wie
Set uiDocNeu = ws.EditDocument(True, doc)
als letzte Zeile hat nicht geholfen.
Ich habe in den Code für den QueryOpen und den QueryClose einen
bzw
eingefügt, aber ein zweites "QueryOpen" wird nicht in der Statuszeile ausgegeben.
Wie bekomme ich den QueryOpen ausgeführt? Ich wollte ungerne den Code im QueryOpen nochmal in das Knopf-Script einfügen.
Schönes Wochenende!
Frank