Не создается коллеция документов методом Search

Тема в разделе "Lotus - Программирование", создана пользователем ozzyzello, 13 окт 2009.

  1. ozzyzello

    ozzyzello Гость

    Добрый день.
    Пытаюсь создать отчет по существующей базе - писал не я. Мне нужно собрать коллекцию документов по базе, использую метод Search. Нужные мне документы не попадают в выборку, пока их не пересохранить. После пересохранения коллекция создается прекрасно. Может кто-то подскажет в чем может быть дело?
     
  2. amigolinx

    amigolinx Гость

    У Search'a вторым параметром идет notesDateTime и про него хелп говорит "A cutoff date. The method searches only documents created or modified since the cutoff date. Specify Nothing to indicate no cutoff date." Возможно здесь собака порылась, ибо при пересохранении дата доков попадает в период "обрезки", а до этого они из него "выпадают".

    А вообще для качественного ответа желательно видеть, каким образом используется у тебя этот метод в коде ;)
     
  3. ozzyzello

    ozzyzello Гость

    Вторым параметром в Search пишу Nothing.
    Все документы попадают в базу путем импорта из Excel, потом создается форма, заполняются нужные поля данными из Excel.
    Решил проблему путем пересохранения документов, т.е:

    dim w as new notesuiworkspace

    set doc=new notesdocument(bd)
    doc.form="test"
    call doc.save(true,false)
    set doc_cur=w.editdocument(true,doc)
    call doc_cur.save
    call doc_cur.close

    Думаю, что все это увеличит обрабатку документов очень надолго, наверняка есть более простой и быстрый путь - вот только как? :)
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Значит, криво заполняются нужные поля. Перед сохранением происходит перерасчет полей, и всё работает.
    Документы не подходят под условие. Смотри формулу отбора и типы полей.
     
  5. abbatik

    abbatik Lotus team
    Lotus team

    Регистрация:
    20 окт 2008
    Сообщения:
    277
    Симпатии:
    0
    Судя по тому, что ты пересохраняешь UI документ, возможно какая-то обработка этих полей происходит в QuerySave, или PostSave.

    А вообще, если хочешь сэкономить время, советую построить служебный вид, в котором собрать нужные критерии поиска и использовать GetAllDocumentsByKey для создания коллекции.
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А может и в самих полях (Computed/InputTranslation и т.д.)
     
  7. ozzyzello

    ozzyzello Гость

    Сложилось ощущение, что при импорте из Excel как бы правильно поля не заполнять, документ все равно требует обязательного пересохранения.
    А то, что в документе присутствует заполнение некоторых полей при сохранении - так и есть. И достаточно много полей Computed.
    Т.е. если я правильно понимаю, то пересохранение здесь оптимальный вариант.

    Всем большое спасибо за подсказки и советы.
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Чтобы по сто раз не пересохранять, можно попробовать при импорте выполнить
    notesDocument.ComputeWithForm( doDataTypes, raiseError )
    перед сохранением
     
  9. ozzyzello

    ozzyzello Гость


    Все верно - нашел несколько неправильно заполненных полей, поле было типа дата, а заполнялось текстовыми значениями. Все работает, огромное спасибо.

    Воспользовался, спасибо
     
Загрузка...

Поделиться этой страницей