Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mxm am 23.08.05 - 13:20:34

Titel: Object varible not set
Beitrag 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
Titel: Re: Object varible not set
Beitrag von: mxm am 23.08.05 - 13:23:33
Achso, wenn ich allerdings ein anderes Item kopieren möchte, dann geht es komischerweise. z.B.: mit "Subject".

Gruß mxm
Titel: Re: Object varible not set
Beitrag von: gossifu am 23.08.05 - 13:43:21
Hallo,

hast Du im Debugger schon nachgesehen, ob MemoDoc und Maildoc gesetzt sind?
Gibt es ein Feld 'Body'?

mfg

gossifu
Titel: Re: Object varible not set
Beitrag von: mibo11 am 23.08.05 - 13:44:51
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
Titel: Re: Object varible not set
Beitrag von: mxm am 23.08.05 - 13:58:08
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ß
Titel: Re: Object varible not set
Beitrag von: mibo11 am 23.08.05 - 14:18:50
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

Titel: Re: Object varible not set
Beitrag von: mxm am 23.08.05 - 14:32:29
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.
Titel: Re: Object varible not set
Beitrag von: mibo11 am 23.08.05 - 15:04:35
OK habe verstanden, so sollte es funktionieren.

Set BodyItem = New NotesRichTextItem( MailDoc, "Body" )
....
Call MemoDoc.RenderToRTItem( BodyItem )
Call MailDoc.Save( True, True )

Gruß Sascha

Titel: Re: Object varible not set
Beitrag von: mxm am 23.08.05 - 15:36:11
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?
Titel: Re: Object varible not set
Beitrag von: mibo11 am 23.08.05 - 15:52:19
Stimmt hast natürlich Recht, mein Versehen, Sorry.

Schick doch bitte einmal den kompletten Code ....


Gruß Sascha
Titel: Re: Object varible not set
Beitrag von: mxm am 23.08.05 - 16:24:00
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.
Titel: Re: Object varible not set
Beitrag von: Thomas Schulte am 23.08.05 - 16:35:56
   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.
Titel: Re: Object varible not set
Beitrag von: mibo11 am 23.08.05 - 16:50:37
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
Titel: Re: Object varible not set
Beitrag von: mibo11 am 23.08.05 - 20:06:18
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
Titel: Re: Object varible not set
Beitrag von: mxm am 24.08.05 - 09:27:31
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

Titel: Re: Object varible not set
Beitrag von: Thomas Schulte am 24.08.05 - 09:53:17
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!
Titel: Re: Object varible not set
Beitrag von: mxm am 24.08.05 - 10:13:29
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ß
Titel: Re: Object varible not set
Beitrag von: mxm am 24.08.05 - 11:09:11
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ß
Titel: Re: Object varible not set
Beitrag von: mxm am 24.08.05 - 11:42:45
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