环境产品:Lotus Domino
平台:跨平台
软件版本:5.x
问题Domino 的数据库在使用的过程中,会因为复制产生很多的复制冲突文档,那么,可不可以创建一个视图用来只是显示冲突的文档,以方便用户删除这些文档(是在用户已经确认这些文档没有用的情况下)。
解答

具体的步骤如下:
1。创建一个视图:
A. 设计一个视图,并在视图的属性框中,不选中“以层次结构显示答复文档”。(这是因为复制/保存冲突的文档都是答复文档。)

151101682.gif


B. 为此视图使用下面的选择公式: SELECT @IsAvailable($Conflict)

151104676.gif


2。使用LotusScript 。
下面有两个脚本的样例,可以放置在数据库的脚本设计元素中。其中,第一个脚本(是在PostOpen的事件中),创建一个DocumentCollection来收集冲突的文档,并一个一个地比较冲突文档的主文档。 第二个脚本(是在QueryClose的事件中),主要是查找此数据库中的所有不是冲突的文档(包括了这些冲突文档的主文档),并把它们从冲突的文件夹中删除。

重要提示:下面的样例脚本只是为了实现此功能所提供的两个样例。用户如果想要实现自己预期的想法,实施这些脚本就必须经过严格的测试,之后才能实施。Notes支持是不会为用户特殊的设置来定制这些脚本的。

样例一、在PostOpen的事件中的脚本( Script for PostOpen Event):

Sub Postopen(Source As Notesuidatabase)
----Dim session As New NotesSession
----Dim db As NotesDatabase
----Dim collection As NotesDocumentCollection
----Dim conDoc As NotesDocument
----Dim winDoc As NotesDocument
----Dim datetime As New NotesDateTime("01/01/50")
----Dim formula As String
----Dim ws As New NotesUIWorkSpace

----formula="@IsAvailable($Conflict)"
----Set db=session.CurrentDatabase
----Set collection=db.Search(formula, datetime, 0)
----For i=1 To collection.Count
--------Set conDoc=collection.GetNthDocument(i)
--------Set winDoc=db.GetDocumentByUNID(conDoc.ParentDocumentUNID)
--------Call winDoc.PutInFolder("(Conflicts)")
----Next
----Call ws.ViewRefresh
End Sub


----------------------------------------------------


样例二、在QueryClose的事件中的脚本(Script for QueryClose Event):

Sub Queryclose(Source As Notesuidatabase, Continue As Variant)
----Dim session As New NotesSession
----Dim db As NotesDatabase
----Dim collection As NotesDocumentCollection
----Dim datetime As New NotesDateTime("01/01/50")
----Dim formula As String

----formula="!@IsAvailable($Conflict)"
----Set db=session.CurrentDatabase
----Set collection=db.Search(formula, datetime, 0)
----Call collection.RemoveAllFromFolder("(Conflicts)")

End Sub

转载地址:http://blog.csdn.net/cgs1999/article/details/593750