Autor Thema: Object varible not set  (Gelesen 3354 mal)

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Object varible not set
« 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

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #1 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

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Object varible not set
« Antwort #2 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
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Object varible not set
« Antwort #3 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

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #4 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ß

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Object varible not set
« Antwort #5 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


Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #6 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.

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Object varible not set
« Antwort #7 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


Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #8 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?

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Object varible not set
« Antwort #9 am: 23.08.05 - 15:52:19 »
Stimmt hast natürlich Recht, mein Versehen, Sorry.

Schick doch bitte einmal den kompletten Code ....


Gruß Sascha

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #10 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.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Object varible not set
« Antwort #11 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.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Object varible not set
« Antwort #12 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

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Object varible not set
« Antwort #13 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

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #14 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


Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Object varible not set
« Antwort #15 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!
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #16 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ß

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #17 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ß

Offline mxm

  • Frischling
  • *
  • Beiträge: 27
Re: Object varible not set
« Antwort #18 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz