Hallo,
ich muss seit über 3 Jahren mal wieder was in Notes entwickeln und stehe auf dem Schlauch.
Ich habe ein Frameset im linken Frame werden wird eine Ansicht angezeigt der Dokumente per Doppelklick im rechten Frame geöffnet werden sollen. Mit bestehenden Dokumenten funktioniert dies. Nun soll ich die Datenbank so anpassen, das im linken Frame der Posteingang angezeigt wird und bei Doppelklick im rechnte Frame ein neues Dokument mit Daten aus der eingehenden Mail angezeigt wird. Beim Ausführen des angepassten Codes erhalte ich die Meldung "Notes-Fehler - Zielrahmen ist Vorgänger des Script-Objekts" (siehe auch Anhang)
Hier ist noch der Quellcode:
Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
Dim nwuGUI As NotesUIWorkspace
Dim nduMe As NotesUIDatabase
Dim ndbDB As NotesDatabase
Dim ndcSelection As NotesDocumentCollection
Dim ndoDoc As NotesDocument
Dim ndoNew As NotesDocument
Dim nitSource As NotesItem
Dim nitDest As NotesItem
Dim nduThis As NotesUIDocument
Dim vntValue As Variant
Set nwuGUI = New NotesUIWorkspace
Set nduMe = nwuGUI.GetCurrentDatabase()
Set ndbDB = nduMe.Database()
nwuGUI.SetTargetFrame("nrmDatenbereich")
Set ndcSelection = Source.Documents
If ndcSelection.Count > 0 Then
Continue = False
Set ndoDoc = ndcSelection.GetFirstDocument
Set ndoNew = ndbDB.CreateDocument()
ndoNew.ReplaceItemValue "Form", "nfrArtikel"
vntValue = ndoDoc.GetItemValue("Subject")
ndoNew.ReplaceItemValue "t_Titel", vntValue
Set nitSource = ndoDoc.GetFirstItem("Body")
Set nitDest = nitSource.CopyItemToDocument(ndoDoc, "t_Inhalt")
ndoNew.ReplaceItemValue "t_SourceDocUId", ndoDoc.UniversalID
Set nduThis = nwuGUI.EditDocument(True, ndoNew)
End If
End Sub
Kann mir jemand auf die Sprünge helfen?
Vielen Dank im Voraus.
Rainer
Hallo Rainer,
es sieht so aus, als ob das UI-Dokument nicht richtig zurückgegeben und/oder das SetTargetFrame mit neuen Dokumenten so nicht korrekt funktioniert.
Aus der Notes-Designer Hilfe:
EditDocument method
...
This method raises the error lsERR_LSXU13_ANCESTOR_TARGET_FRAME (4426) if it attempts to return a NotesUIDocument object for a target frame that is the ancestor of the frame containing the code. You can suppress returning the object by specifying returnNotesUIDocument as False. The document opens in the target frame but you do not have access to its NotesUIDocument object. Calling this method as a subroutine does not suppress returning the object; you must specify returnNotesUIDocument as False.
Da du es hier anscheinend auch nicht brauchst, versuch mal anstelle von
Set nduThis = nwuGUI.EditDocument(True, ndoNew)
das
Set nduThis = nwuGUI.EditDocument(True, ndoNew, , , False)
MFG
ERR
P.S.: Rainer = Mr. Seagate ;)
Immer noch die gleiche Fehlermeldung?
Da war auch noch ein Fehler meinerseits:
Call nwuGUI.EditDocument(True, ndoNew, , , False)
Ein "Call" anstelle des "Set...", da das "False" als 5. Parameter ja bewirkt, das kein UI-Dokument zurückgegeben wird.
MFG
ERR
Falls es weiterhin so nicht funktioniert, das ganze mit Hilfe eines Agenten machen, der das ausgewählte Dokument übergeben bekommt und den Code dann dort ausführen.
Siehe Beispiel aus der Notes-Designer-Hilfe:
REM Start agent and pass note ID of document
Set agent = _
db.GetAgent("Agent to be run parameter LotusScript")
If agent.Run(doc.NoteID) = 0 Then
Messagebox "Agent ran",, "Success"
Else
Messagebox "Agent did not run",, "Failure"
End If
MFG
ERR