Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jor am 02.09.05 - 13:05:38

Titel: Memo-Body-Feld füllen im Backend....
Beitrag 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
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 02.09.05 - 13:09:02
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.
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 02.09.05 - 13:10:44
Hallo diali,

jep, genau die Syncronisation! Ich werde deinen Vorschlag sofort ausprobieren! Danke!
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 02.09.05 - 13:14:25
Wie gehst du dabei vor, aus einem BE-Doc ein Frontend zu erzeugen?
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 02.09.05 - 13:15:42
geht mit:
NotesUIWorKSapace.EditDocument(True, NotesDocument)
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 02.09.05 - 13:19:31
Danke! :-)
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 12:28:14
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
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 05.09.05 - 12:46:52
wie sieht den der Code aus und in welcher Zeile kommt der Fehler?
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 12:56:02
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.
 
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 05.09.05 - 12:58:52
"Set uimemo = ws.EditDocument( true, NotesDocument)"

NotesDocument muss noch durch das entsprechende Object ersetzt werden.
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 13:07:14
Klar, habe ich ja gehabt, also das gewünschte Backend-Document, das ich dann als uidocument öffnen möchte. Haut aber nicht hin.
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 05.09.05 - 13:10:29
hast Du das Backend-Dokument gespeichert?
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 13:18:42
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?
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 05.09.05 - 13:21:08
wenn du den Code posten würdest, dann könnte ich vielleicht helfen, so ist es aber nur ein Stochern im Heuhaufen.
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 13:41:32
Kommt gleich. Ebend noch aufräumen. ;-)
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 13:44:28
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
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 05.09.05 - 13:48:59
ä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 )
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 13:50:53
Danke, ich probiere es sofort aus!
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 14:00:32
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.
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: diali am 05.09.05 - 14:04:52
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" )
Titel: Re: Memo-Body-Feld füllen im Backend....
Beitrag von: jor am 05.09.05 - 14:12:45
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!