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

时间:2010-03-24 13:42:01

标签: lotus-notes lotus-domino interop-domino

我想从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 个答案:

答案 0 :(得分:5)

试试这个:

searchString = "@IsAvailable($Conflict)";

答案 1 :(得分:2)

文档上有一个字段将任何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);
            }

您需要确保已将Domino jar添加到项目中。 This是为Domino Java开发设置eclipse IDE的一个很好的参考。

PS。您还可以修改数据库的设计以最大限度地减少复制冲突。但我不会在这里详细介绍你。发表评论,如果您想知道并生病,请提供有关此主题的说明。