Domino 9 und frühere Versionen > ND9: Entwicklung

Body zu Rich Text wandeln

(1/2) > >>

wittmann_franz:
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

rambrand:
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

ERR:
Hallo Franz,


--- Code: ---If doc.Body = "" Then
--- Ende Code ---

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
--- Ende Code ---

MFG
ERR

wittmann_franz:
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

ERR:
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

--- Ende Code ---

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
--- Ende Code ---
.

MFG
ERR

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln