我有2个数据库:比如说dbA和dbB。实际上,dbB是dbA的“子”数据库,因为它包含的表单/ views / frameset / etc都在dbA中。
我现在想要从dbA的一些视图(比如说vwA)复制一些8K文档到dbB的相同视图(vwA)。 THese 8k包含父文档和子文档,在dbA中列出了OK,带有@Text(@UniqueDocumentID)。我刚刚做了一个测试,复制了一个父文档及其响应,并粘贴在第二个数据库中,但不幸的是,两个文档之间没有连接...我想UNID已经改变......
有什么解决方案吗?谢谢你的时间。
答案 0 :(得分:9)
是的,将文档复制到另一个数据库始终会为目标数据库中的文档创建新的UniversalID。
为避免这种情况,您的LotusScript应该像这样工作:
CopyAllItems
从源文档到目标文档targetDoc.UniversalID = sourceDoc.UniversalID
这样,目标文档与源文档具有相同的UniversalID,文档之间的链接也应该在目标数据库中工作。
这是处理选定文档的代理的示例:
Dim session As New NotesSession
Dim dbSource As NotesDatabase
Dim dbTarget As NotesDatabase
Dim col As NotesDocumentCollection
Dim docSource As NotesDocument
Dim docTarget As NotesDocument
Set dbSource = session.Currentdatabase
Set dbTarget = session.Getdatabase(dbSource.Server, "YourTargetDatabase.nsf", false)
Set col = dbSource.Unprocesseddocuments
Set docSource = col.Getfirstdocument()
While Not docSource Is Nothing
Set docTarget = dbTarget.Createdocument()
Call docSource.Copyallitems(docTarget, true)
docTarget.UniversalID = docSource.UniversalID
Call docTarget.save(True, False)
Set docSource = col.Getnextdocument(docSource)
Wend
答案 1 :(得分:0)
或者,您可以通过设置复制公式让复制为您处理此问题,假设dbA和dbB是副本。
答案 2 :(得分:-2)
我认为最简单的方法是使用NotesDocument类的CopyToDatabase方法创建脚本并复制文档。 CopyToDatabase方法保留文档的UniversalID(出于性能原因)。至少对于R7以下的版本来说,情况确实如此。
可在此处找到更多信息: IBM Technote: Documents copied using CopyToDatabase method reuse same UNID
示例脚本(从Knut复制和修改)将是:
Dim session As New NotesSession
Dim dbSource As NotesDatabase
Dim dbTarget As NotesDatabase
Dim col As NotesDocumentCollection
Dim docSource As NotesDocument
Dim docTarget As NotesDocument
Set dbSource = session.Currentdatabase
Set dbTarget = session.Getdatabase(dbSource.Server, "YourTargetDatabase.nsf", false)
Set col = dbSource.Unprocesseddocuments
Set docSource = col.Getfirstdocument()
While Not docSource Is Nothing
Set docTarget = docSource.Copytodatabase(dbTarget)
Set docSource = col.Getnextdocument(docSource)
Wend