问题描述
在表单中定义了富文本域程序代码:放在表单的postopen中。SubPostopen(SourceAsNotesuidocument)OnErrorGotoErrorHandleDimsessionAsNewNotesSessionDimdbAsNotesDatabaseDimviewAsNotesViewDimdcAsNotesDocumentDimdc1AsNotesDocumentDimrtfAsNotesRichTextItemSetdc1=source.DocumentPrintdc1.Icarnum(0)Setrtf=dc1.GetFirstItem("ydlink")到这一句总是报错:typemismatch偶就想不明白了,明明就是定的NotesRichTextItem啊,为啥总报这个错?苦恼万分。想了一整天,头都痛了
解决方案
解决方案二:
DimrtfAsVariant'...setvalueofdoc...Setrtf=dc1.GetFirstItem("ydlink")我用这种方法试的话,rtf.type是1280,不知道是什么类型的域,但是后面的Callrtf.AppendDocLink(dc,"链接")语句就报错,说没有AppendDocLink的函数
解决方案三:
domino真是用的我非常纠结,555
解决方案四:
该回复于2012-05-17 08:59:05被版主删除
解决方案五:
rtf.type是1280表明那个字段被保存成文本型字段了,参考NotesItem类的Type属性。1)可能那个名字对应的字段之前就是文本型的,然后保存了一份文档,之后又被修改为富文本域型字段,这样就会有这个问题3)你的代码某处把这个字段当成文本型字段赋值,保存后就变成文本型字段了,比如calldc1.ReplaceItemValue("ydlink","")或者dc1.ydlink=""'...解决办法是先不要写那些与富文本域相关的代码,打开文档后前台保存文档,或者代码里面先把那个文本字段删除,然后新建一个同名的富文本域即可。
解决方案六:
fare2000大神,分析的很有道理.
解决方案七:
引用1楼的回复:
DimrtfAsVariant'...setvalueofdoc...Setrtf=dc1.GetFirstItem("ydlink")我用这种方法试的话,rtf.type是1280,不知道是什么类型的域,但是后面的Callrtf.AppendDocLink(dc,"链接")语句就报错,说没有AppendDocLink的函数
纠结说明你还嫩..我都已经开始吐血了DimrtfAsVariant没事别这么用,Variant虽然也可以当对象用,但是以后代码长了,维护起来很麻烦谁知道你这个variant中间被set进什么东西了,如果你中间set进一个字符串,后面想拿它当item用,铁定一个typemismatch给你打出来rtf.type是1280-->seehelp.nsf-->TEXT(1280)meanstextortextlist.嗯,你用variant保存notesitem对象,那么variant里对象便不是固定的类型像这个问题中的,你item是文本的,那variant里就是一个普通的notesitemobject,它当然没有appenddoclink函数,你得把RTF定义成NotesRichTextItem,再getfirstitem,appenddoclink应该就不报没有AppendDocLink的错了。