3

我有 2 个数据库:比如说 dbA 和 dbB。实际上,dbB 是 dbA 的“子”数据库,因为它包含的表单/视图/框架集/等都在 dbA 中。

我现在想从 dbA 的视图(比如说 vwA )复制一些 8K 文档到 dbB 的同一视图( vwA )。这些 8k 包含父文档和子文档,在 dbA 中使用 @Text(@UniqueDocumentID) 列出了 OK。我刚刚做了一个测试,复制了一个父文档及其响应,并粘贴到了第二个数据库中,但不幸的是,这两个文档之间没有建立连接……我猜 UNID 已经改变了……

有什么解决办法吗?谢谢你的时间。

4

3 回答 3

10

是的,将文档复制到另一个数据库总是会为目标数据库中的文档创建一个新的 UniversalID。

为避免这种情况,您的 LotusScript 应该像这样工作:

  • 在目标数据库中创建新文档
  • CopyAllItems从源文档到目标文档
  • 将相同的 UniversalID 设置为目标文档 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
于 2013-06-21T07:01:41.260 回答
0

或者,您可以通过设置复制公式让复制为您处理此问题,假设 dbA 和 dbB 是副本。

于 2013-07-22T22:11:18.547 回答
-2

我认为最简单的方法是创建脚本并使用 NotesDocument 类的 CopyToDatabase 方法复制文档。CopyToDatabase 方法保留文档的 UniversalID(出于性能原因)。至少对于 R7 之前的版本是这样。

可以在此处找到更多信息: IBM 技术说明:使用 CopyToDatabase 方法复制的文档重用相同的 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
于 2013-06-21T09:03:45.387 回答