Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 Поиск писем в IBM Notes с помощью C#  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
Добрый день! Смог реализовать поиск писем в IBM Notes по одному критерию (отправитель). А мне нужно как минимум по 2 критериям: отправитель и (дата доставки или дата отправления) письма. Что мне нужно изменить в коде?

            String NoteServer = "Адрес сервера";
            string NateMailFile = "расположение MailFile на сервере .nsf";

            NotesDateTime _datetime = null;

            NotesSession session = new NotesSession();
            session.Initialize("");

            //Get connection to database.
            Domino.NotesDatabase NotesDb = session.GetDatabase(NoteServer, NateMailFile, false);
            //NotesDb.Open();

            Console.WriteLine(NotesDb.Title);
            Console.WriteLine("");
            
            //Отбираю письма которые содержат значения в отправителе
            NotesDocumentCollection NotesDocuments = NotesDb.Search("@Contains(From;'MicroStrategy Distribution Services')", _datetime,0);
            //NotesDb.Search("@Contains(Subject;'SQL Server Job System:')"
   
            Console.WriteLine(NotesDocuments.Count);
16 авг 17, 15:20    [20728508]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
Vincent Vega
Member

Откуда: Киев
Сообщений: 114
msleg,

Если память не изменяет, то так должно работать:

NotesDocumentCollection NotesDocuments = NotesDb.Search("@Contains(From;'MicroStrategy Distribution Services') & @Contains(Subject;'SQL Server Job System:')", _datetime,0);
19 авг 17, 18:18    [20736022]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
Vincent Vega,
Поменял код
NotesDocumentCollection NotesDocuments = NotesDb.Search("@Contains(From;'MicroStrategy Distribution Services') & @Contains(DeliveredDate; '20.12.2016')", _datetime,0);

Вроде ошибки не вызывает. Но при этом писем не находит(( Хотя письма точно есть. Может быть это связанно с форматом даты?





Сделал вывод писем по одному критерию, чтобы убедиться что есть нужные письма с датой
            NotesDocumentCollection NotesDocuments = NotesDb.Search("@Contains(From;'MicroStrategy Distribution Services')", _datetime, 0);
            
            if (NotesDocuments.Count > 0)
            {
                NotesDocument document = NotesDocuments.GetFirstDocument();
                while (document != null)
                {
                    
                    Console.WriteLine(document.GetItemValue("DeliveredDate")[0]);
                    Console.WriteLine(document.GetItemValue("body")[0]);

                    document = NotesDocuments.GetNextDocument(document);
                }
            }


Вот что выводит
Картинка с другого сайта.
22 авг 17, 11:50    [20740834]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
Vincent Vega
Member

Откуда: Киев
Сообщений: 114
msleg,

@Contains(DeliveredDate; '20.12.2016') работает только со стрингом (https://www.ibm.com/support/knowledgecenter/de/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_CONTAINS.html)

DeliveredDate - это поле имеет тип "Data Type: Time/Date"

Поэтому, либо преобразовывайте дату в текст либо ищите по дате DeliveredDate = @Date(...)
22 авг 17, 13:34    [20741281]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
Vincent Vega,

Спасибо. Все получилось

NotesDocumentCollection NotesDocuments = NotesDb.Search("@Contains(From;'MicroStrategy Distribution Services') " +
                "& @Contains(@Text(@Day(DeliveredDate)) + '.' + @Text(@Month(DeliveredDate)) + '.' +  @Text(@Year(DeliveredDate)) ; '20.12.2016')", _datetime,0);
22 авг 17, 15:46    [20741737]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
еще ссылка по поводу поиска - https://stackoverflow.com/questions/9769876/how-to-use-search-method-for-lotus-notes-document-search
22 авг 17, 16:48    [20741945]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
Garrick
Member

Откуда: Москва
Сообщений: 2726
Vincent Vega
msleg,

@Contains(DeliveredDate; '20.12.2016') работает только со стрингом (https://www.ibm.com/support/knowledgecenter/de/SSVRGU_9.0.0/com.ibm.designer.domino.main.doc/H_CONTAINS.html)

DeliveredDate - это поле имеет тип "Data Type: Time/Date"

Поэтому, либо преобразовывайте дату в текст либо ищите по дате DeliveredDate = @Date(...)

Намного проще сделать так:
DeliveredDate=[20.12.2016]
23 авг 17, 09:56    [20743060]     Ответить | Цитировать Сообщить модератору
 Re: Поиск писем в IBM Notes с помощью C#  [new]
msleg
Member

Откуда: Москва
Сообщений: 519
Garrick,
ну да)) так как-то красивей и меньше кода)

NotesDocumentCollection NotesDocuments = NotesDb.Search("@Contains(From;'MicroStrategy Distribution Services') & DeliveredDate=[22.08.2017]", _datetime, 0);
23 авг 17, 11:59    [20743558]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить