Autor Thema: Öfnnen eines neuen Dokuments in anderem Frame anzeigen  (Gelesen 2266 mal)

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
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:

Code
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
Rainer Zaske

MCSD - C#

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Öfnnen eines neuen Dokuments in anderem Frame anzeigen
« Antwort #1 am: 17.11.14 - 13:00:00 »
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:
Zitat
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

Code
Set nduThis = nwuGUI.EditDocument(True, ndoNew)

das

Code
Set nduThis = nwuGUI.EditDocument(True, ndoNew, , , False)

MFG
ERR

P.S.: Rainer = Mr. Seagate ;)



Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Öfnnen eines neuen Dokuments in anderem Frame anzeigen
« Antwort #2 am: 17.11.14 - 13:45:25 »
Hallo,

die Änderung aht leider das Problem nuicht behoben.

Rainer
Rainer Zaske

MCSD - C#

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Öfnnen eines neuen Dokuments in anderem Frame anzeigen
« Antwort #3 am: 17.11.14 - 13:59:39 »
Immer noch die gleiche Fehlermeldung?

Da war auch noch ein Fehler meinerseits:

Code
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

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Öfnnen eines neuen Dokuments in anderem Frame anzeigen
« Antwort #4 am: 17.11.14 - 14:12:16 »
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:
Code
 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz