Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet 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 !!!
-
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
-
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 ;)
-
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
-
:-\ 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
-
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
-
...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 ?
-
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
-
...also die funktion hätte ich soweit umgedreht, nur das problem ist das attachments vom bodyfeld nicht mitübernommen werden...pfaaaa :-((
-
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.
-
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
-
@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
-
...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 ?
-
@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 :-)
-
Ok wenn das wirklich schon in alten Versionen so drinnengestanden ist, dann entschuldige mich und danke für die Aufklärung.
Grüße
Ralf