Autor Thema: ...warum kann ich das BODY Feld nicht auslesen ?  (Gelesen 6205 mal)

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
...warum kann ich das BODY Feld nicht auslesen ?
« 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 !!!

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #1 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
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline tower

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
    • Uwe Schräpler IT-Service
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #2 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 ;)

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #3 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
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #4 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

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #5 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
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #6 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 ?

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #7 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
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #8 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 :-((

s_Old

  • Gast
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #9 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.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #10 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #11 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
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Scotty67

  • Aktives Mitglied
  • ***
  • Beiträge: 146
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #12 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 ?

s_Old

  • Gast
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #13 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 :-)

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: ...warum kann ich das BODY Feld nicht auslesen ?
« Antwort #14 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
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz