Как вернуть все конфликтные документы из базы данных Notes? - PullRequest
1 голос
/ 24 марта 2010

Я хочу получить все конфликтные документы из базы данных 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 ]

5 голосов
/ 24 марта 2010

Попробуйте это:

searchString = "@IsAvailable($Conflict)";
2 голосов
/ 26 марта 2010

В документе есть поле, которое помечает любой документ Notes как конфликт, называемый «$ Conflict». Если он присутствует в документе, то вы знаете, что это конфликт, (как это делает Карлос).

Вы можете создать представление в базе данных, которое имеет формулу.

Выберите @isAvailable ("Конфликт $")

, а затем переберите все документы в представлении. Похоже, вы делаете это на 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 в свой проект. Этот является хорошим справочным материалом для настройки IDE затмения для разработки Java-приложений Domino.

PS. Вы также можете изменить дизайн базы данных, чтобы минимизировать конфликты репликации. Но я не буду утомлять вас здесь деталями. Оставьте комментарий, если вы хотите знать, и не предоставите инструкции по этой теме.

...