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

UI ドキュメントを閉じて、UI ドキュメントの Terminate イベントに暗号化コードを配置することで、同様の問題が回避されるのを見てきました。エージェントを起動する方法を考える手間を省きます。Terminate が実行されるまでに、ui doc ハンドルがメモリから削除されます (これはまさに必要なことなので、Notes は同じエラーを表示しません)。 " tvdpol が提案するビット。

UI doc の queryClose で、UNID を使用して一時変数を設定します。

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

uidoc の Terminate イベントで、UNID を取得し、元のドキュメントを取得します。つまり、バックエンド doc-UI ドキュメントだけがメモリ内にありません..

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 に答える