错误 - 由notesuidocument实例化时无法加密notesdocument

时间:2013-05-22 06:26:52

标签: lotus lotusscript

我在行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 

2 个答案:

答案 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)