代码之家  ›  专栏  ›  技术社区  ›  ssg31415926

如何从Notes数据库返回所有冲突文档?

  •  1
  • ssg31415926  · 技术社区  · 16 年前

    我想从Notes数据库中获取所有冲突文档。到目前为止,我得到了:

    Domino.NotesSession notesSession;
    Domino.NotesDatabase notesDatabase = this.OpenDatabase(out notesSession);
    
    Domino.NotesDateTime dateTime = notesSession.CreateDateTime(String.Empty);
    
    Domino.NotesDocumentCollection results =
        notesDatabase.Search(this.SearchString, dateTime, 0);
    

    它的工作原理如下:

    searchString = "@Contains(ShortName;\"Bob\")";
    

    如何对冲突文档进行等效处理?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Carlos    16 年前

    试试这个:

    searchString = "@IsAvailable($Conflict)";
    
        2
  •  2
  •   angryITguy    16 年前

    文档上有一个字段,将任何Notes文档标记为称为“$conflict”的冲突。如果它出现在文件上,那么你就知道这是一种冲突(就像卡洛斯逃避的那样)。

    可以在具有公式的数据库中创建视图。

    选择@isavailable(“$conflict”)。

    然后循环浏览视图中的所有文档。看起来你是用Java做的,所以我想它会是这样的。

    import lotus.domino.*;
    import java.util.*;
    //.....
    //.....
            Session s = NotesFactory.createSession();
            Database db = s.getDatabase("server", "filename");
            View vw = db.getView("viewname");
            Document doc = null;
            doc = vw.getFirstDocument();
    
            while (doc != null) {
                // do what you want in here.
                doc = vw.getNextDocument(doc);
                }
    

    您需要确保已经将DominoJAR添加到项目中。 This 是为Domino Java开发建立Eclipse IDE的一个很好的参考。

    另外,您还可以修改数据库的设计,以尽量减少复制冲突。但我不会让你对细节感到厌烦的。如果您想知道,请发表评论,我将提供有关此线程的说明。

    推荐文章