Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jor am 02.09.05 - 13:05:38
-
Hallo *,
ich möchte aus einer Anwendung heraus ein Memo erzeugen und sein Body-Feld mit Werten aus Richtext-feldern sowie Text-Feldern des geöffneten Dokumentes füllen.
Dabei habe ich das Prob, dass die Werte wohl übernommen werden, und im Debbug-modus auch vorhanden sind, aber nach dem Reload der Mail-Maske keine Werte im Feld Memo stehen. Die Felder Subject und EnterSendTo über nehmen die Werte (wie sie ja auch sollten ;-) ).
Das Body-Feld der Mail habe ich im Backend in ein rtitem übernommen,
nur das "Zurückschreiben" funzt nicht. :-(
Habt ihr einen Tipp?
Grüße,
Jor
-
RT-Felder haben ein Problem mit der Syncronisation zwischen BackEnd und FrontEnd.
Bau Dir erst das Dokument im BE zusammen inkl. RTF und hol es dann ins UI oder schließe das Dokument im UI und öffne es erneut.
-
Hallo diali,
jep, genau die Syncronisation! Ich werde deinen Vorschlag sofort ausprobieren! Danke!
-
Wie gehst du dabei vor, aus einem BE-Doc ein Frontend zu erzeugen?
-
geht mit:
NotesUIWorKSapace.EditDocument(True, NotesDocument)
-
Danke! :-)
-
Hallo nochmal,
ich bin wieder mit obigem Prob beschäftigt. Deinen Lösungstipp versucht umzusetzen, aber ich bekomme nun immer einen Fehler:
"User-defined error", hast du einen weiteren Tipp für mich? Das NotesDocument existiert im Backend.
Gruß
Jor
-
wie sieht den der Code aus und in welcher Zeile kommt der Fehler?
-
Ich wollte den Schritt mit der Erzeugung eines NotesDocumentes im Backend durchführen, und dieses dann mittels "Set uimemo = ws.EditDocument( true, NotesDocument)" im Frontend öffnen. Und genau bei dieser Codezeile klemmt's.
Ich möchte folgendes umsetzen: Ein im Frontend geöffnetes Formular enthält mehrere RichtextItems, diese sollen ausgelesen und in ein Memo, ins Bodyfeld mit Formatierung etc., übernommen werden.
-
"Set uimemo = ws.EditDocument( true, NotesDocument)"
NotesDocument muss noch durch das entsprechende Object ersetzt werden.
-
Klar, habe ich ja gehabt, also das gewünschte Backend-Document, das ich dann als uidocument öffnen möchte. Haut aber nicht hin.
-
hast Du das Backend-Dokument gespeichert?
-
Nein hatte ich nicht gespeichert, jetzt einmal mit speichern probiert, auch nicht besser. Habe die Arbeitsumgebung auf Insel gestellt, dann klappt es (anscheinend). Nach dem Zurückstellen der Arbeitsumgebung auf Büro haut es nicht mehr hin, dann kommt wieder der Fehler User-defined error.
Generelles Speichern des Backends ist nötig?
-
wenn du den Code posten würdest, dann könnte ich vielleicht helfen, so ist es aber nur ein Stochern im Heuhaufen.
-
Kommt gleich. Ebend noch aufräumen. ;-)
-
Hier der Code:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim maildb As New NotesDatabase( "", "" )
Dim uidoc As NotesUIDocument 'Aktuelles Angebotsformular
Dim mail As NotesDocument ' Memo im Backend
Dim doc As NotesDocument 'Aktuelles Doc im Backend
Dim body As Variant
Dim container As Variant
Set uidoc=ws.CurrentDocument 'Übernehme aktuelles Angebotsformular
Call uidoc.Save( )
Set doc = uidoc.Document
Call doc.Save( True, True ) 'Doppeltes Speichern...
Call maildb.OpenMail 'Öffnen der Maildatei
Dim uimail As NotesUIDocument 'Aktuelles/neues Mailformular
Set container = doc.GetFirstItem( "Body" )
Set mail = maildb.CreateDocument( )
mail.Form = "Memo"
Call mail.ComputeWithForm(True,True)
Call mail.Save( True,True )
Set body = mail.GetFirstItem( "Body" )
Call body.AppendRtItem( container ) 'Soll den Wert aus Container in Body schreiben,
'später per Schleife mehrere Inhalte einfügen
Set uimail = ws.EditDocument( True, mail )
End Sub
-
änder mal die Reihenfolge. Save sollt kurz vor dem Öffnen des UI-Dokumentes erfolgen.
Set mail = maildb.CreateDocument( )
mail.Form = "Memo"
Set body = mail.GetFirstItem( "Body" )
Call body.AppendRtItem( container ) 'Soll den Wert aus Container in Body schreiben,
'später per Schleife mehrere Inhalte einfügen
Call mail.ComputeWithForm(True,True)
Call mail.Save( True,True )
Set uimail = ws.EditDocument( True, mail )
-
Danke, ich probiere es sofort aus!
-
Haut nicht ganz hin, das Body-Item wird nicht gefüllt. So wie ich es gesehen habe, kann das Body-Feld aus dem Document mail (mail.getfirstitem("Body")) nicht referenziert werden. Im Debugger wird das Bodyfeld unter Items im document mail nicht aufgeführt. Es existiert nicht.
-
Du machst ein
Dim body As Variant
benutze dafür
dim body as NotesRichTextItem
Erstelle das NotesRichTextItem body neu mit
Set body = mail.CreateRichTextItem( "Body" )
-
Jep, jetzt funzt es, jedenfalls in der Arbeitsumgebung Insel. Die Deklaration und Wertzuweisung des Body-Items habe ich so aus der Notes-Hilfe entnommen.
Vielen Dank!