拷贝文档也有技巧(转载)

lotus开发中,时常会碰到把文档从数据库A拷贝到数据库B中,某些情况下,我们不希望文档的UNID发生变化,应该怎么做呢?

技术要点:

1、notesdocument的CopyToDatabase方法。这个拷贝动作即使用同一表单的文档,但是UNID会发生变化。

2、深刻理解notesdocument的UniversalID属性。UniversalID可以读写。在进行写的时候,会创建文档的复本。

实例:

建立“操作菜单选择”类型的代理,目标为“所有选定的文档”,代码如下:

Sub Initialize
   Dim s As New NotesSession
   Dim note As NotesDocument
   Dim db As NotesDatabase
   Dim collection As notesdocumentcollection
   Dim targetDoc As NotesDocument
   Dim tempDoc As NotesDocument
   Dim beforeUnid As String
   Set db = s.CurrentDatabase
   Set collection = db.unprocesseddocuments
   Set note = collection.GetFirstDocument
   Dim pmDb As NotesDatabase
   Set pmDb = New NotesDatabase("oa/app","pm.nsf")
   Messagebox s.NotesBuildVersion
   Dim strUnid As String
   While (Not note Is Nothing)
       strUnid = note.UniversalID
       Set targetDoc = note.CopyToDatabase( pmdb )    
       beforeUnid = targetDoc.UniversalID
       targetDoc.UniversalID = strUnid
       Call targetDoc.save(True,True)
       Set tempDoc = pmDb.GetDocumentByUNID(beforeUnid)
       Call tempDoc.Remove(True)
       Set note = collection.GetNextDocument(note)
   Wend
End Sub


你可能感兴趣的:(数据库,技术,开发,技巧,Collection)