将文档复制到另一个视图并锁定当前文档

时间:2019-04-08 06:30:37

标签: lotus-notes lotus-domino domino-designer-eclipse

我在Notes上还很陌生,所以我仍然不熟悉每个功能。我将简要解释我的过程。

我在“列表”视图上有一个文档列表。我想将当前所有文档复制到另一个视图,比如说将“批处理”作为新文档,并在“列表”视图上锁定所有文档的标记。我将在“批处理”中编辑新文档,然后单击“保存”,此新文档将另存为新的当前文档,对于旧的当前文档,它将删除到“旧”视图。这样我就可以看到新的编辑文档和旧的文档。

到目前为止,我发现了this link的锁定标志,但我不知道如何为所有文档创建

我的问题是,我是否需要在视图上创建一个按钮以将所有文档复制到另一个视图?如何将所有文档复制到新视图并另存为新文档?谁能建议我可以添加到流程中的任何功能?预先感谢!

1 个答案:

答案 0 :(得分:2)

我将首先将viewList.refresh设置为false来解决这个问题:这会在您遍历视图时阻止刷新视图索引,尤其是当您进行更改选择公式中某些内容的编辑时。

使用document.copy遍历每个文档,通过设置Form参数来创建档案。

在循环结束时,在终止事件和/或错误处理程序中,将viewList.refresh再次设置为true。

这样,仅在要编辑原始文档时才需要锁定原始文档,最好在循环内完成最短的持续时间,而不是尝试在循环持续时间内锁定所有文档。如果沿着这条路线走,还要在terminate事件和/或错误处理程序中对文档进行解锁。

从理论上讲,我建议的终止事件和错误处理程序的动作不需要重复:只是我的谨慎本性。

Function CopyDoc( docOld As NotesDocument, dbThis As NotesDatabase) As NotesDocument
    Dim docNew As NotesDocument
    On Error GoTo Handler

    Set docNew  = docOld.copyto(dbThis)
    Call docOld.lock()
    docOld.Form = "Archive"
    Call docOld.Save(True,True)
    Call docOld.unlock()
    'docNew Edits You Want To Make
    Call docNew.Save(True,True)
    Set CopyDoc = docNew
e:  Exit Function

Handler:
    Call docOld.unlock()
    'additional logging for diagnostics
    Resume e
End Function