Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Scotty67 am 29.07.10 - 07:39:15

Titel: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Scotty67 am 29.07.10 - 07:39:15
...ich darf mal wieder um Hilfe bitten ?!

bekomme einen Type Mismatch
hier der auszug aus dem code

Dim maildoc As New NotesDocument (db)
....

maildoc.Form = "DBMemo"
maildoc.Subject = CustomerMailSubject
maildoc.Empfaenger = myNames
maildoc.SMNummer = uismnummer
maildoc.UsedTime = 0
maildoc.Body="XX"
   
Call maildoc.Save(True,True)
   
Dim rtitemC As NotesRichTextItem
Set rtitemC = maildoc.GetFirstItem( "Body" )  '''HIER IST DAS PROBLEM !!!
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Ralf_M_Petter am 29.07.10 - 08:03:46
Da es sich um ein neues Dokument handelt, solltest du doch CreateRichTextItem verwenden. Übrigens selbt wenn das Bodyitem schon existieren würde, funktioniert dein Code erst ab Notes Version 8. Unter 7 muss das RTItem als Variant definiert sein.

Grüße

Ralf
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: tower am 29.07.10 - 08:05:27
Hallo,

Richtextitems funktionieren etwas anders als 'normale' NotesItems.

Hier ein funktionierender Code:

   Dim session As New NotesSession
   Dim maildoc As NotesDocument
   Dim rtitem As NotesRichTextItem
   Set maildoc = session.CurrentDatabase.CreateDocument
   
   maildoc.Form = "DBMemo"
   maildoc.Subject = CustomerMailSubject
   maildoc.Empfaenger = myNames
   maildoc.SMNummer = uismnummer
   maildoc.UsedTime = 0
   Set rtitem = New NotesRichTextItem(maildoc,"Body")
   Call rtitem.AppendText("XX")
   
   
   
   Call maildoc.Save(True,True)
   
   Dim rtitemC As NotesRichTextItem
   Set rtitemC = maildoc.GetFirstItem( "Body" )  '''HIER IST DAS PROBLEM NICHT MEHR ;)
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Ralf_M_Petter am 29.07.10 - 08:08:43
Ups das maildoc.body=xx habe ich überlesen. Dann ist es ja klar, dass es nicht funktionieren kann, da getFirstItem dann ein normales Item zurückliefert.

Grüße

Ralf
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Scotty67 am 29.07.10 - 10:26:59
 :-\ vielen dank leute !
JA ich hab ein problem denn meine Benutzer arbeiten noch mit R7 verdammt....
So jetzt rtitem nur als variant zu deklarieren hilf leider ned, ist noch etwas zu beachten ?

lg/hannes
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Ralf_M_Petter am 29.07.10 - 10:33:21
Du solltest mit CreateRichTextItem arbeiten um ein neues RichtextItem anzulegen. Dann musst du es auch nicht als Variant definieren.

Dann musst du aber die zeile maildoc.body="xx" rausnehmen.

Schreib doch mal genau was du machen willst, denn dein Code macht einfach keinen Sinn. Vor allem das mittendrinnen speichern. Das braucht man nämlich nur um die Änderungen am Richtext dann auch ins UI zu holen.

Grüße

Ralf
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Scotty67 am 29.07.10 - 11:01:19
...also aus dem UIdocument wird ein Mail erzeugt.
An dieses Mail muss ein bestimmter Zusatztext angefügt werden (so eine Art Disclaimer)

d.h. Die Störungsmeldung (=irgend ein Form) ist offen und der Benutzer klickt "Send Mail to Customer"...
dann soll ein MailDokument aufgehen und der Body (RT) Feld Bereich aus der Störungsmeldung übernommen
und dann wird noch einem Configdokument der Zusatztext dazugeholt und am Ende vom Mail angefügt...

der unter R8 funktionierende Code (dank EURER Hilfe) sieht jetzt (verkürzt) so aus:

Dim rtitem As Variant
Dim rtitemA As NotesRichTextItem
Dim rtitemB As NotesRichTextItem

Set uidoc = workspace.CurrentDocument               '####die offene Störungsmeldung
Set doc=uidoc.document
Set rtitemB=doc.GetFirstItem ("Body")

Dim maildoc As NotesDocument
'############ LOOKUP  Begin/End Text  ################
   
'Lookup für das Einleitungs- bzw. Ende-Dokument
Set appendview=db.GetView("App2MailView")
Set appenddoc=appendview.GetFirstDocument
   
While Not (appenddoc Is Nothing)
   configType=appenddoc.GetItemValue("FormName")
      
  If configType(0)=FormName Then 
      Set rtitemA = appenddoc.GetFirstItem( "Body" )
      MailBeginText=appenddoc.GetItemValue( "MailBeginText" )
     Goto endAppendDocLookup
     else
End If
Set appenddoc = appendview.GetNextDocument( appenddoc )
Wend
   
endAppendDocLookup:

Set maildoc=session.CurrentDatabase.CreateDocument
maildoc.Form = "DBMemo"
maildoc.Subject = CustomerMailSubject
maildoc.Empfaenger = myNames
maildoc.SMNummer = uismnummer
maildoc.UsedTime = 0

Set rtitem = New NotesRichTextItem(maildoc,"Body")
Call rtitem.appendRTItem(rtitemB)
Call rtitem.appendRTItem(rtitemA)

Call maildoc.Save(True,True)
Call workspace.EditDocument (True, maildoc)

Dokument bleibt dann im Edit Mode stehen und Benutzer kann noch darauf Einfluss nehmen.

Was müsste jetzt im Bezug auf R7-tauglichkeit genau geändert werden ?
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Ralf_M_Petter am 29.07.10 - 11:13:03
Soweit ich es jetzt sehe kann das rtitem ruhig ein NotesRichTextItem sein, aber rtitemA und rtitemB müssen in Notes 7 Variant sein, da sie mit GetFirstItem geholt werden. Lies doch mal die Hilfe von getFirstItem in deinem 8er Designer. Da ist es doch genau erklärt.

Grüße

Ralf
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Scotty67 am 29.07.10 - 12:10:03
...also die funktion hätte ich soweit umgedreht, nur das problem ist das attachments vom bodyfeld nicht mitübernommen werden...pfaaaa :-((
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: s_Old am 29.07.10 - 12:16:22
Soweit ich es jetzt sehe kann das rtitem ruhig ein NotesRichTextItem sein, aber rtitemA und rtitemB müssen in Notes 7 Variant sein, da sie mit GetFirstItem geholt werden. Lies doch mal die Hilfe von getFirstItem in deinem 8er Designer. Da ist es doch genau erklärt.

Das stimmt so nicht, auch unter R7 und R6 (zumindest 6.5.x) muss ein RTI nicht als Variant deklariert werden, dami GetFirstItem funktioniert.
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Axel am 29.07.10 - 12:27:52
Soweit ich es jetzt sehe kann das rtitem ruhig ein NotesRichTextItem sein, aber rtitemA und rtitemB müssen in Notes 7 Variant sein, da sie mit GetFirstItem geholt werden. Lies doch mal die Hilfe von getFirstItem in deinem 8er Designer. Da ist es doch genau erklärt.

Das stimmt so nicht, auch unter R7 und R6 (zumindest 6.5.x) muss ein RTI nicht als Variant deklariert werden, dami GetFirstItem funktioniert.

Kann ich so bestätigen. Ich habe, wenn ich RTI verwendet habe mit nie mit Variant sondern immer mit NotesRichTextItem gearbeitet.

Axel
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Ralf_M_Petter am 29.07.10 - 12:40:06
@Scotty sind die Attachment überhaupt im Body Feld enthalten. Nimmt er normalen Text mit?

@Axel und Sven Ich kann es jetzt nicht mehr nachprüfen, da ich keinen 7er Client mehr habe. Aber die Dokumentation zu der Funktion ist eindeutig. Selbst wenn manchmal Sachen unter bestimmten Umständen schon in früheren Versionen funktionieren halte ich es für einen absolut schlechten Stil undokumentierte Funktionen zu verwenden wenn man es nicht unbedingt machen muss.

Aber muss jeder selbst entscheiden.

Grüße

Ralf
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Scotty67 am 29.07.10 - 12:52:23
...so hab mir das live bei einem R7 user angesehen

mein R8 code läuft auch am R7 Client - NUR !!! wenn ein Attachment im Body Feld liegt dann bekommt man den Fehler "Note item not found" 2x
rein Text ist überhaupt kein Problem...

*heul heul* - warum denn nur ?
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: s_Old am 29.07.10 - 14:26:46
@Axel und Sven Ich kann es jetzt nicht mehr nachprüfen, da ich keinen 7er Client mehr habe. Aber die Dokumentation zu der Funktion ist eindeutig. Selbst wenn manchmal Sachen unter bestimmten Umständen schon in früheren Versionen funktionieren halte ich es für einen absolut schlechten Stil undokumentierte Funktionen zu verwenden wenn man es nicht unbedingt machen muss.

Ich schon und der Satz hat sich in der Designer Hilfe seit 6.5.3 nicht geändert, "earlierer releases" ist da ja auch ein bisschen undefiniert :-)
Titel: Re: ...warum kann ich das BODY Feld nicht auslesen ?
Beitrag von: Ralf_M_Petter am 29.07.10 - 14:34:50
Ok wenn das wirklich schon in alten Versionen so drinnengestanden ist, dann entschuldige mich und danke für die Aufklärung.

Grüße

Ralf