1

我在该行收到错误“无法在 notesuidocument 实例化时加密 notesdocument” cjDoc.Encrypt。有人可以告诉我如何解决/为什么会发生。

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 
4

2 回答 2

0

该错误表明您在打开 uidocument 时无法对其进行加密。

您是否尝试在加密之前关闭 uidocument?

于 2013-05-30T07:09:29.627 回答
0

我已经看到通过关闭 UI 文档并将加密代码放在 UI 文档上的 Terminate 事件中解决了类似的问题。节省了如何解雇代理的工作。在 Terminate 运行时,ui doc 句柄会从内存中删除(这正是您需要发生的事情,因此 Notes 不会给您同样的错误),因此您必须执行“记下 UNID 并重新获取支持的文档” " tvdpol 建议的一点。

在 UI 文档的 queryClose 中,使用 UNID 设置一个临时变量 ..

Dim s as new notessession
s.setEnvironmentVar("TempUNID",source.document.universalID)

在 uidoc 的 Terminate 事件中,获取 UNID 并获取原始 doc,这意味着只有后端 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)
于 2013-09-24T14:43:02.680 回答