首页 > 解决方案 > 使用 lotusscript 锁定当前文档

问题描述

我有一份文件和一份文件的副本。我想使用 LotusScript 为文档创建文档锁。

我已将当前文档分别放在计算机视图中,并将文档复制到草稿视图中。下面是创建副本的操作。

创建副本

Sub Click(Source As Button)
    Dim ns As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim newdoc As NotesDocument
    Dim dc As NotesDocumentCollection

    Set db= ns.CurrentDatabase
    Set dc= db.UnprocessedDocuments

    If dc.Count<>1 Then
        Messagebox "No or too many documents selected"
        Exit Sub
    End If

    Set doc= dc.GetFirstDocument
    Set newdoc= doc.CopyToDatabase(db)
    Call newdoc.ReplaceItemValue("PStatus", "Draft")
    Call newdoc.Save(True, False)
End Sub

保存按钮

Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Dim view As NotesView

    Set uidoc = workspace.CurrentDocument
    Set db = session.CurrentDatabase
    Set view = db.GetView("Draft")
    Set doc = view.GetDocumentByKey("Draft", True)
    vpswd = Inputbox$("Pls input code to save :")

    If vpswd = "o" Then

        uidoc.EditMode = True
        Set doc = uidoc.Document
        Set doc = view.GetFirstDocument
        If doc.PStatus(0) = "Draft" Then
            Set newdoc= doc.CopyToDatabase(db)
            Call newdoc.ReplaceItemValue("PStatus", "Active")
            Call newdoc.Save(True, False)
        End If
        Call uidoc.FieldSetText("SaveOptions" , "1")

        Call uidoc.Save
        Call uidoc.Close
    End If


End Sub

每次创建文档副本时如何锁定当前文档?例如,当前文档将在创建副本文档时锁定。

另一个问题是,对于复制文档,我保存后,我想将当前文档替换为复制文档,并且复制文档将是活动文档。而当前文档不会从数据库中删除,而是从计算机视图中删除并显示在“存档”视图中。

在草稿视图中,副本文档将从视图中删除。任何帮助将不胜感激。谢谢!

标签: lotus-noteslotus-dominolotusscript

解决方案


锁定文档应该是隐式的。确保在所有文档中使用状态字段。例如,当您创建副本时,将复制文档的状态设置为“已复制”,并将 nw 文档的状态设置为“草稿”。您必须涵盖所有不同的状态更改。最好还添加一个包含永远无法更改的唯一文档 ID 的字段。也许还添加一个版本号。

状态示例:

  • 草稿:文件在建(只有一份,不可复制)
  • 当前:有效文件(只有一份,可复印)
  • 已复制:当前已复制的文档(只有一个,不能复制)
  • 已归档:已被替换的文档(多个,无法复制)

它可能有助于创建一个 STD,一个状态转换图。


推荐阅读