我有一份文件和一份文件。我想使用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
每次创建文档副本时如何锁定当前文档? E.g当前文档将在创建复制文档时锁定。
另一个问题是,对于复制文档,在我保存之后,我想将当前文档替换为复制文档,复制文档将是实时文档。虽然当前文档不会从数据库中删除,但会从“计算机”视图中删除并显示在“已存档”视图中。
在草稿视图中,复制文档将从视图中删除。任何帮助将不胜感激。谢谢!
锁定文档应该是隐含的。确保在所有文档中使用“状态”字段。例如。创建副本时,将复制文档的状态设置为“已复制”,将nw documof nt设置为“草稿”。您必须涵盖所有不同的状态更改。最好也是添加一个包含永远不能更改的唯一文档ID的字段。也许还添加一个版本号。
状态示例:
它可能有助于创建STD,状态转换图。
我做了类似的事情。当我称之为新版本时,它就是“草稿”文档。以前的文件是“已批准”的文件。在新版本获得批准之前,用户只能看到已批准的版本,然后旧的已批准文档将从数据库中归档。如果您希望所有版本都保留在数据库中,但只有较新的文档,则可以使用我称之为HistoryID的字段。基本上我在每个文档中都有一个字段,其中包含最多三个值:
TheUNID ParentUNID:TheUNID:家长 TheUNID:ChildUNID:儿童
组合时会计算“theUNID”字段,因此它永远不会改变。如果创建了新版本或草稿,则HistoryID现在将具有两个值:
TheUNID TheUNID:ChildUNID:Parent
这让你知道你现在有一个新的草稿,你所在的文件实际上是父母。 “ChildUNID”实际上是您刚创建的草稿文档的“theUNID”。
在您放入HistoryID的子文档或新草稿文档中:
TheUNID ParentUNID:TheUNID:Parent
通过这种方式,您的草稿知道它的父母是谁。
在您的数据库中的代码中,您只需要打开任何文档,首先检查HistoryID字段。如果有孩子,则将用户带到孩子身边。无论父进程被打开还是代数走了多远都没关系,您的代码将继续遍历HistoryID,直到找到没有父对象的当前子文档。听起来不错?
如果您需要澄清,请告诉我。