【问题标题】:Lotus Notes 7 - scheduled Agent for copying parent & response docs. without changing UNIDLotus Notes 7 - 用于复制父文档和响应文档的预定代理。不改变UNID
【发布时间】:2013-07-20 18:36:52
【问题描述】:

我问了一个问题 (Lotus Notes 7 - copy / move docs. ( parent & response docs ) without changing the UNID ?),我收到了一个对我有很大帮助的答案!谢谢克努特赫尔曼!

它工作正常,它是一个代理选择文件。我想知道是否可以创建一个每天运行一次的调度代理?这意味着用户不应手动选择文档并运行代理。

感谢您的宝贵时间和分享信息!

【问题讨论】:

  • 如果您不知道自己在做什么,我会非常小心地将文档复制到另一个数据库并更改 UNID。我从我现在的工作场所开始,他们有一个“存档”代理,可以将文档复制到存档数据库并根据需要修改 UNID。这又给我们带来了很大的伤害,我不得不从头开始重写代码。真的不需要做你描述的事情。你为什么不解释一下你实际上想要做什么?
  • 你好,卡尔-亨利!有一个大的 .nsf 应用程序,我们希望将其分解为“小”应用程序。 (分成几部分)主应用程序已经有一些文档(父文档和响应文档),我们希望将它们导入新的(小)应用程序。如果我只是复制并粘贴它的文档。没有将它们粘贴在一起的 UNID。
  • 编写一个代理将主文档和所有响应和响应到响应复制到新数据库然后重新建立父子关系并不难。几周前我写了一个存档代理,就是这样做的。只需复制主文档,然后在所有响应上调用递归函数,您可以在其中使用 NotesDocument 类的 MakeResponse() 方法。

标签: copy lotus-notes agent


【解决方案1】:

是的,你可以。看here。您可以在代理的属性中设置时间表:

您可以选择要选择的文档。在示例中将选择所有数据库的文档。如果您选择“无”,您可以在代理代码中选择您的文档,例如NotesDocumentCollection。

对于您的情况,最简单的方法是选择所有文档并添加一个 if 语句来测试文档是否尚未在目标数据库中:

Set docSource = col.Getfirstdocument()
While Not docSource Is Nothing
    If docTarget.GetDocumentByUNID(docSource.UniversalID) Is Nothing then
        Set docTarget = dbTarget.Createdocument()
        Call docSource.Copyallitems(docTarget, True)
        docTarget.UniversalID = docSource.UniversalID
        Call docTarget.save(True, False)
        Set docSource = col.Getnextdocument(docSource)
    End If 
Wend

【讨论】:

  • 谢谢!如果,我已经复制了一些文档。手动,预定代理将复制所有文档。它会被覆盖吗?还是会有一些重复的文档?
  • 这取决于您的代码。你有充分的灵活性,例如您可以测试文档是否已复制到其他数据库。
  • 好的,我明白了。我将尝试上一个问题的代码。谢谢!
  • 在我的答案中添加了代码,应该可以满足您的需求。
  • 谢谢亲爱的克努特!感谢您的帮助,我稍后会尝试,我会宣布您!希望看到我的反馈:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多