Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mxm am 23.08.05 - 13:20:34
-
Hallo,
ich hätte mal wieder ein kleines Problemchen. Und zwar zeigt mir der Debugger immer "Object varible not set" an.
Und zwar möchte ich den KOMPLETTEN Body, welches ein RichText.. ist kopieren und in ein anderes Dokument als Body wieder einfügen.
lt. Designer Hilfe und Forum müsste der Code so ausehen.
Code.:
Dim BodyItem As NotesRichTextItem
Set BodyItem = MemoDoc.GetFirstItem("Body") ' MemoDoc = ursprüngliches Dokument
Call BodyItem.CopyItemToDocument(MailDoc, "Body") 'MailDoc = Neues Dokument und an der Stelle soll der Fehler sein.
Wo soll jetzt der Fehler liegen?
Wäre mal wieder für jede Antwort, dankbar.
Wenn ihr weitere Infos braucht gebe ich die euch natürlich gerne.
Gruß mxm
-
Achso, wenn ich allerdings ein anderes Item kopieren möchte, dann geht es komischerweise. z.B.: mit "Subject".
Gruß mxm
-
Hallo,
hast Du im Debugger schon nachgesehen, ob MemoDoc und Maildoc gesetzt sind?
Gibt es ein Feld 'Body'?
mfg
gossifu
-
Vermutlich handelt es sich um ein neues Dokument aus dem du das RichTextIem kopieren möchtest. Dadurch bekommst du mit MemoDoc.getFirstItem kein RichTextItem Objekt zurückgeliefert. Versuche es doch einmal mit CreateRichtextItem.
Code.:
Dim BodyItem As NotesRichTextItem
Set BodyItem = MemoDoc.GetFirstItem("Body") ' MemoDoc =
Gruß Sascha
-
Hallo,
danke für die schnellen Antworten.
Hallo,
hast Du im Debugger schon nachgesehen, ob MemoDoc und Maildoc gesetzt sind?
Gibt es ein Feld 'Body'?
mfg
gossifu
Ja es Gibt ein Feld Namens "Body".
Mit CreateRichtextItem geht es jetzt, also es kommt keine Fehlermeldung mehr.
Allerdings kommt beim neuen Dokument kein Inhalt an, der Body ist leer.
habe es so gemacht.
Set BodyItem = MemoDoc.CreateRichTextItem("Body")
Call BodyItem.CopyItemToDocument(MailDoc, "Body")
Gruß
-
Was möchtest du eigentlich machen? Ein neu erstelltes Dokument per Mail verschicken?
Das CreateRichTextItem erzeugt dir zunächst einmal ein neues Objekt, d.h. aber nicht, dass es schon gefüllt ist, dafür bist du verantwortlich. Das Kopieren eines RichtextItems funktioniert auch nur dann erfolgreich, wenn das Objekt gefüllt ist und das passiert spätestens beim Speichern.
Ergo: Entweder füllen des Objektes mit z.B. .AppendText o.ä. oder kopieren eines gefüllten bereits gefüllten Objektes.
Gruß Sascha
-
Ich möchte aus einem geöffnetem Dokument(Memo), das Body Kopieren und in mein eigenes Dokument rein kopieren, welches im Hindergrund erstellt wird und befüllt wird unter anderem mit dem Body Feld der Memo.
So wenn ich jetzt das Body feld kopiere und das neue Dokument damit fülle, dann kommt jetzt beim Empfänger ein leerer Body an.
Ich hoffe das dies verständlich ist, beschreibe manchmal einige Dinge net so gut, aber es wird schon.
-
OK habe verstanden, so sollte es funktionieren.
Set BodyItem = New NotesRichTextItem( MailDoc, "Body" )
....
Call MemoDoc.RenderToRTItem( BodyItem )
Call MailDoc.Save( True, True )
Gruß Sascha
-
Jetzt Kopiert er die kompletten Felder wo der Absender, Sender und Kopie an und BCC usw. drin steht, doch das Body Feld ist immer noch leer.
Was könnte ich noch tun?
-
Stimmt hast natürlich Recht, mein Versehen, Sorry.
Schick doch bitte einmal den kompletten Code ....
Gruß Sascha
-
So, hier mal der Code.
Function MessageSenden(sAdrReply As String, sAdrSender As String, sAdrAlias)
Dim UiWs As New NotesUIWorkspace
Dim UiDoc As NotesUIDocument
Dim nSession As New NotesSession
Dim nDB As NotesDatabase
Dim mailbox As New NotesDatabase("","")
Dim MailDoc As NotesDocument
Dim MemoDoc As NotesDocument
Dim SubjectItem As NotesItem
Dim BodyItem As NotesRichTextItem
Dim Item As NotesItem
Dim sendto As NotesItem
' Dim subject As String
Dim message As NotesItem
Set UiDoc = UiWs.CurrentDocument
Set MemoDoc = UiDoc.Document
Set sendto = MemoDoc.GetFirstItem("EnterSendTo")
Set message = MemoDoc.GetFirstItem("Body")
' subject = "Mario Test Betreff"
Set nDB = nSession.CurrentDatabase
Call mailbox.Open( nDB.server, "mail.box" )
Set MailDoc = mailbox.CreateDocument
MailDoc.Form = "Memo"
Set Item = Maildoc.ReplaceItemValue("SendTo", sendto)
Set Item = Maildoc.ReplaceItemValue("Recipients", sendto)
Set SubjectItem = MemoDoc.GetFirstItem("Subject")
Call SubjectItem.CopyItemToDocument(MailDoc, "Subject")
Set BodyItem = MailDoc.CreateRichTextItem( "Body" )
Call message.CopyItemToDocument(MailDoc, "Body") hier wollte ich dies realisieren
MailDoc.PostedDate = Now()
MailDoc.ComposedDate = Now()
MailDoc.DeliveredDate = Now()
MailDoc.EncryptOnSend = True
Call MailDoc.Save( True,False )
Call UiDoc.Close(False)
End Function
So das mal zum Code.
-
Set BodyItem = MailDoc.CreateRichTextItem( "Body" )
Call message.CopyItemToDocument(MailDoc, "Body") hier wollte ich dies realisieren
Du erstellst erst das item um es dann noch einmal zu erstellen? Den Set Bodyitem kannst du schon mal Weglassen, das Erstellen erledigt der Call schon für dich.
Und du solltest mit dem Debugger an dieser Stelle
Set message = MemoDoc.GetFirstItem("Body")
überprüfen ob Message überhaupt einen Wert hat.
-
Mit
Dim message As NotesRichTextItem
statt
Dim message As NotesItem
und dem gesagten von Thomas müsste es jetzt funktionieren.
CreateRichTextItem brauchst du nur wenn es sich um ein neues Dokument handelt.
Gruß Sascha
-
Habe gerade deinen Code ausprobiert.
Wenn du, wie Thomas es schon erwähnt hat, die folgende Zeile löschst, funktioniert es.
Set BodyItem = MailDoc.CreateRichTextItem( "Body" )
Gruß Sascha
-
Guten Morgen @All,
habe so ebend mal euren Anweisung gefolgt und siehe da, ich bekomme wieder den Fehler "Object varible not set".
Message bekommt auch keinen Wert an dieser Stelle -->
Set message = MemoDoc.GetFirstItem("Body") , ganz schön komisch!
Habe den fehler bei mir gefunden und zwar gibt es kein Item "Body".
Und Nu? Obwohl das Item in der Memomaske aber vorhanden ist.
Gruß mxm
-
Ich blick das jetzt nicht so richtig.
Deiner Schilderung nach ist MemoDoc doch ein bereits abgespeichertes Dokument oder?
Wenn nein dann brauchst du dich nicht über das Verhalten wundern. Dann gibt es Body nämlich erst dann wenn du das Dokument zumindest einmal gespeichert hast.
Das ist der Richtext Fluch!
-
Hallo,
also das Doku. ist noch nicht abgespeichert.
Also besteht das Item Body erst wenn das Dokument abgespeichert ist?
Um das Dok. abzuspeichern, mache ich dann diese Anweisung?
Call MemoDoc.Save(True,false)
Oder muss ich in dem Fall etwas anderes machen?
Gruß
-
Hi,
also wenn ich das Doku. abspeicher, dann ändern sich auch nichts. Ausser, dass das Doku. abgespeichert wird, allerdings ohne dem Inhalt welches im Body Feld steht.
Und wenn die Mail dann versendet wird und beim Empfänger ankommt, dann existiert ein Feld Names Body, doch ohne Inhalt.
Gruß
-
Hi,
ich habe jetzt die Lösung gefunden.
Bedanke mich bei euch allen.
Und zwar hatte Thomas recht, dass Dokument musste vorher noch abgespeichert werden.
Hatte es falsch gespeichert.
Hier mal der Code, falls nochmals jemand ein Problem mit einen Rich... Item hat.
UiDoc.Save
Set message = MemoDoc.GetFirstItem("Body")
Call message.CopyItemToDocument(MailDoc, "Body")
Gruß Mario