Autor Thema: Body zu Rich Text wandeln  (Gelesen 4359 mal)

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Body zu Rich Text wandeln
« am: 30.12.14 - 11:58:45 »
Hallo zusammen,

ich verarbeite in einer Anwendung eingehende Mails und muss in diesem Zusammenhang die body Felder bearbeiten.
Der eingehende Inhalt des body Feldes so einer Mail wird am Ende mit einem weiteren RichText Feld mittels AppendRTItem zusammengeführt.

Das klappt so weit auch gut, bis das body Feld der eingehenden Mails nicht im Richtext sonder als Text Feld hereinkommen.

Hier mal ein paar Script Schnipsel:

Dim s As NotesSession
   Dim db As NotesDatabase
   Dim v As NotesView
   Dim doc, docVor As NotesDocument
   Dim docFW As NotesDocument
   Dim rtitem, rtitem2 as NotesRichTextItem

   Set s = New NotesSession
   Set db=s.CurrentDatabase
   Set v = db.Getview("MeldungenZumWeiterleitenAll")
   Set doc = v.Getfirstdocument()

               xxxxxxxx

         If doc.Body = "" Then   

            Set rtitem = doc.GetFirstItem("Bemerkung")
         Else            
            Set rtitem = doc.GetFirstItem( "Body" )
         End If       
               xxxxxxxx

Am Ende kommt dann noch:   

Call rtitem2.AppendRTItem(rtitem )

zum zusammenführen der beiden Felder.

Wie gesagt es klappt alles gut solange das eingehende Mail ein Body Feld im Rich Text Format dabei hat.
Sobald es ein Text Feld ist kommt es zum Typ Mismatch bei If doc.Body = "" Then  und am Ende bei Call rtitem2.AppendRTItem(rtitem )
Wie kann ich das an der Stelle beheben.
Ich denke wenn ich in der Lage bin das rtitem wieder nach Richt Text zu überführen wäre mir geholfen, doch ich weiß leider nicht wie es geht.

Würde gern folgende Überprüfung mit laufen lassen:

If ( rtitem.Type <> RICHTEXT) Then
            mach was ????????????
         Else
            'mach nix, Script läuft weiter
         End If

Danke vielmals für Eure Unterstützung

Gruß
Volker

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #1 am: 30.12.14 - 12:23:20 »
Hallo,

mit dem Type bist Du schonmal richtig. Wenn Du dann merkst, das Feld ist ein Textfeld, dann machst Du beim rtitem2 kein appendrtitem, sondern ein appendtext ... klingt logisch oder?

Bye,
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #2 am: 30.12.14 - 12:43:37 »
Hallo Franz,

Code
If doc.Body = "" Then

Wenn man doc.Feldname verwendet, wird ein Array zurückgeliefert. Bei deinem Beispiel bedeutet das, das ein Array mit einem String verglichen wird und das liefert die "Type mismatch"-Fehlermeldung zurück. Da hättest du also mindestens noch "(0)" dahinter hängen müssen, damit das überhaupt funktioniert könnte.

Das eigentliche Problem ist, das du mit dem Item vom Typ NotesRichTextItem arbeitest (dein "rtitem"). Da kommt auch ein "Type mismatch" her.

Du musst ein NotesItem verwenden und dann den Type abfragen, so wie du es geschrieben hast. Dann kannst du auch das machen, was Markus geschrieben hat (entscheiden ob AppendRTItem oder AppendText genutzt wird).

Code
Dim item As NotesItem

Set item = doc.GetFirstItem("Body")

If item.Type = 1 Then
' Richtext - AppendRTItem verwenden
... weiterer Code
Else
' kein Richtext - AppendText verwenden
... weiterer Code
End If

MFG
ERR


Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #3 am: 30.12.14 - 13:29:14 »
Hallo,

vielen Dank schon mal für die Hilfe.
habe ich so umgesetzt und es funktioniert jetzt auch bei den Dokumenten mit Text Body Feld.
Nur leider nicht mehr wenn es als RichText herein kommt.

Nun habe ich bei der Zeile If doc.Body(0) = "" Then den Fehler Variant enthält keinen Container.

Wo steckt denn jetzt das berühmte Detail.

Danke noch einmal
Gruß
Volker

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #4 am: 30.12.14 - 13:38:30 »
Hallo,

du musst mit dem NotesItem arbeiten. Ich hätte auch noch schreiben müssen "es kommt normalerweise ein Array zurück, außer bei z.B. RichText..."  ::)

Code
If item.Type = 1 Then
' Richtext - AppendRTItem verwenden
' item ist ein RICHTEXT, also AppendRTItem
Call rtitem2.AppendRTItem(item) 
Else
' kein Richtext - AppendText verwenden
' item ist kein RICHTEXT, also AppendText
Call rtitem2.AppendText(item.Text) 
End If

Anhand des Item.Type wird geprüft, wie es weiter gehen soll. Bei RichText mit AppendRTItem, bei Text mit AppendText. Da brauchst du dann keine Prüfung des Body-Feldes mit
Code
If doc.Body(0) = "" Then
.

MFG
ERR

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #5 am: 30.12.14 - 13:50:28 »
Ich glaube ich bin auf dem Holzweg...... ???

also, die Abfrage mit
 If doc.Body(0) = "" Then   
           Set rtitem = doc.GetFirstItem("Bemerkung")
         Else           
            Set rtitem = doc.GetFirstItem( "Body" )
         End If

macht hier eigentlich nur noch die Probleme.
Den anderen Tipp von Euch habe ich ja bereits eingebaut und der läuft auch schon perfekt.
Wenn ich die (0) hinter doc.Body weglasse funktioniert es mit den Rich Text Body Feldern, aber nicht mit den Text Body Feldern und umgekehrt.
An der Stelle muss doch etwas falsch sein.
Ich komme allein nur leider nicht drauf.   >:(

Gruß
Volker

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #6 am: 30.12.14 - 14:27:57 »
Code
' Als erstes den Body prüfen
Set item = doc.GetFirstItem("Body")

If item.Text = "" Then
' kein Text in Body
Set item = doc.GetFirstItem("Bemerkung")
End If

' dann den Type des item prüfen
If item.Type = 1 Then
' Richtext - AppendRTItem verwenden
' item ist ein RICHTEXT, also AppendRTItem
Call rtitem2.AppendRTItem(item) 
Else
' kein Richtext - AppendText verwenden
' item ist kein RICHTEXT, also AppendText
Call rtitem2.AppendText(item.Text) 
End If

MFG
ERR
« Letzte Änderung: 30.12.14 - 14:30:38 von ERR »

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #7 am: 30.12.14 - 14:44:36 »
Jou, das wars.

Ich danke noch einmal und wünsche einen guten Rutsch und ein frohes neues Jahr.

Gruß
Volker

Offline ERR

  • Frischling
  • *
  • Beiträge: 46
  • Geschlecht: Männlich
Re: Body zu Rich Text wandeln
« Antwort #8 am: 30.12.14 - 14:49:23 »
Kein Problem.

Auch dir einen guten Rutsch und ein frohes neues Jahr  :)

MFG
ERR

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz