Hallo,
ich probiere gerade ein RT aus einer Dialogbox in das Dokument zu übernehmen, das die Dialogbox aufgerufen hat.
In der Maske der Dialogbox habe ich dazu die UID des Dokumentes gespeichert, aus dem die Dialogbox aufgerufen wurde. Dann habe ich in die Maske der Dialogbox einen Button gesetzt, der auf das Parentdoc zugreift und den Inhalt des RT-Feldes rüberkopieren soll.
Sub Click(Source As Button)
On Error Goto errhandler
Const ScriptName$ = "Button Lösung hinzufügen"
Dim session As New notessession
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim db As NotesDatabase
Dim pdoc As NotesDocument
Dim doc As NotesDocument
Dim rc As Variant
Dim rtitemA As NotesRichTextItem
Dim rtitemB As NotesRichTextItem
Dim rtitemC As NotesRichTextItem
Dim rtstyle As NotesRichTextStyle
Set rtstyle = session.CreateRichTextStyle
rtstyle.Bold = True
Dim colorObject As NotesColorObject
Set colorObject = session.CreateColorObject
colorObject.NotesColor = COLOR_RED
Dim tmpPfadStr As String
tmpPfadStr = Environ("TEMP")
Dim tmpObjectName As String
Dim objectBody As NotesEmbeddedObject
Dim tmpFile As String
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set pdoc = db.GetDocumentByUnID(doc.dlg_parentid(0))
Set rtitema = doc.Getfirstitem("dlg_loesung")
If Not rtitemA Is Nothing Then
If (rtitemA.Type = RICHTEXT ) Then
If Not Isempty(rtitemA.EmbeddedObjects) Then
Set rtitemb = New NotesRichTextItem(pdoc,"vbfr_helpdesk_loesung_anhaenge")
Set rtitemC = New NotesRichTextItem(pdoc,"vbfr_helpdesk_loesung")
tmpInhaltText = rtitemA.Getformattedtext(False, 0)
Forall object In rtitemA.EmbeddedObjects
If ( object.Type = EMBED_ATTACHMENT ) Then
tmpObjectName = object.Name
tmpFile = tmpPfadStr & "\" & tmpObjectName
Call object.Extractfile(tmpFile)
Set objectBody = rtitemb.EmbedObject( EMBED_ATTACHMENT, "", tmpFile)
Call object.remove
Kill tmpFile
End If
End Forall
End If
Call rtitemc.BeginSection(Cstr(Now) & ": Lösung von " & Cstr(session.CommonUserName), rtstyle, colorObject, False)
Call rtitemc.addnewline(1)
Call rtitemc.appendrtitem(rtitema)
Call rtitemc.addnewline(1)
Call rtitemc.EndSection
End If
End If
Call uidoc.Close
ende:
Exit Sub
errhandler:
Msgbox ScriptName$ + Chr(13) + logerror()
Resume ende
End Sub
Aufruf der Dialogbox:
doct.dlg_parentid = doc.UniversalID
Call ws.DialogBox("DialogboxLoesung",True,True,True,False,False,False,"Frage",docT,True,True,False)
[... mehr passiert nicht ...]
Damit sollten Dateianhänge aus dem Richtextfeld der Dialogmaske (dlg_loesung) in das Parentdoc ins Feld vbfr_helpdesk_loesung_anhaenge kopiert werden, diese dann aus dem Richtextfeld gelöscht werden und der Rest des Richtextfeldes (formatierter Text) soll dann in das Feld vbfr_helpdesk_loesung kopiert werden.
Nur, der Anhang erscheint nicht im RTF vbfr_helpdesk_loesung_anhaenge, sondern am Ende des Parentdocs. Und der Rest des RTF der Dialogmaske (Text der hier eingegeben wurde), erscheint nicht im RTF vbfr_helpdesk_loesung.
Mittels einer kleinen Debug-Abfrage habe ich per getformattedtext den Text aus dem rtitema versucht auszulesen. Das Ergebnis war ein Nullstring.
Wenn ich in das RTF der Dialogmaske nur einen Text eingebe, dann sagt rtitema es sei NOTHING.
Vermutlich ein trivialer Fehler im Script, aber ich steige nicht mehr durch.
Dann noch eine Frage, die mir beim Debuggen in den Sinn kam - aber eher aus Interesse am Phänomen.
Ich habe die Maske des Parentdoc mit Richtext-Feldern versehen. Wird ein neues Dokument erstellt, sind diese erstmal leer. Wenn ich mir dann mit einem Doc-Editor die Felder anschaue, sind das erstmal Text-Felder. Werden diese erst mit Befüllen zu einem RTF konvertiert?
Bye,
Markus