我在行cjDoc.Encrypt
处收到错误“无法在notesuidocument实例化时加密notesdocument”。有人能告诉我如何解决/为什么会这样。
Dim currDb as NotesDatabase
Set currDb=session.CurrentDatabase
Set cjDoc = currDb.GetDocumentByUNID(Trim(Source.Document.CJ_UNID(0)))
If Not cjDoc Is Nothing Then
Dim parleyRtItem As NotesRichTextItem
Set parleyRtItem = New NotesRichTextItem(cjDoc,CJ_PARLEY_LINK)
Call parleyRtItem.AppendDocLink(parleyDoc,"Credit Jacket Parley")
cjDoc.ParleyUNID = Source.Document.parleyUNID
'cjDoc.parleyCreation = "Parley document created " & Cstr(Today) & " : "
cjDoc.parleyCreation = "Parley document created " & Cstr(Today) & " "
cjDoc.Encrypt
Call cjDoc.Save(True,True)
End If
答案 0 :(得分:0)
错误表明您的uidocument打开时无法对其进行加密。
你尝试在加密之前关闭uidocument吗?
答案 1 :(得分:0)
我已经看到类似的问题通过关闭UI文档,并将加密代码放在UI doc的Terminate事件中。节省了解决如何解雇代理的问题。 当Terminate运行时,ui doc句柄从内存中删除(这正是你需要发生的事情,所以Notes doenst会给你同样的错误)所以你必须做'记下UNID并重新获得支持的文件“有点tvdpol建议。
在UI doc的queryClose中,使用UNID设置临时变量..
Dim s as new notessession
s.setEnvironmentVar("TempUNID",source.document.universalID)
在Uidoc的Terminate事件中,获取UNID并获取原始文档,这意味着只有后端doc-UI doc不再存在于内存中。
Dim s as new notessession
Dim doc as notesdocument
Dim sUNID as string
sUNID = s.getEnviromnentString"TempUNID"
set doc=ds.currentdatabase.getDocumentByUNID(sUNID)
' do encryption
'
doc.save(false,false)