环境 | 产品:Lotus Domino平台:跨平台软件版本:5.x |
问题 | Domino 的数据库在使用的过程中,会因为复制产生很多的复制冲突文档,那么,可不可以创建一个视图用来只是显示冲突的文档,以方便用户删除这些文档(是在用户已经确认这些文档没有用的情况下)。 |
解答 | 具体的步骤如下:1。创建一个视图:A. 设计一个视图,并在视图的属性框中,不选中“以层次结构显示答复文档”。(这是因为复制/保存冲突的文档都是答复文档。) B. 为此视图使用下面的选择公式: SELECT @IsAvailable($Conflict) 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.ViewRefreshEnd 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 |