Getnextsibling, Getprevsibling In View

Тема в разделе "Lotus - Программирование", создана пользователем soleil, 18 мар 2010.

  1. soleil

    soleil Гость

    У меня есть вид, первая колонка отсортирована по определенному полю. По условию я никак не могу поставить первую колонки с унидом. А мне нужно получить документ по униду в этом виде, причем вид обязательно должен быть с иерархией, потому что необходимо брать затем от полученного документа по униду предыдущий и последующий документы в том же уровне иерархии.

    Могу ли я как-то в виде с иерархией получить документ по униду (причем, чтобы унид был не первой колонкой), а затем от него брать GetNextSibling, GetPrevSibling?
     
  2. amigolinx

    amigolinx Гость

    сначала получить сам документ со стороны базы, использовав
    Код (Text):
    Set startDoc = notesDatabase.GetDocumentByUNID( unid$ )
    а потом передать полученный док параметром в
    Код (Text):
    Set nextDoc = notesView.GetNextSibling( startDoc )
    как получить юнид стартового документа - на ваш вкус и выбор :gifts:
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    ХМ, насколько я помню, в коллекциях такое не катит, doc должен быть взят именно из коллекции, а не из базы по unid, даже если он есть в коллекции. Как к этому отнесётся view не знаю, на эксперименты времени нет.
     
  4. soleil

    soleil Гость

    Да я так делала. Но в таком случае выходит ошибка, что документ startDoc не в виде notesView
     
  5. amigolinx

    amigolinx Гость

    *шепотом* у меня аналогично... поэтому и подкинул такую замутку, чтоб узнать :gifts:
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ну вот, об этом я и говорил. Нужно взять документ из view либо через GetDocumentByKey, либо перебирать все документы до достижения нужного.
    Для ускорения можно попробовать взять документ из базы, вычислить, в какой он категории, взять GetDocumentByKey для этой категории и перебирать все доки, проверяя юнид, пока не доползём до него.
     
  7. soleil

    soleil Гость

    точно, буду перебирать.
    nvy, спасибо еще раз! уже десятый раз меня спасаете :gifts:
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    soleil
    Наверное, лучше сделать так:
    1. Получить юнид дока.
    2. Взять док.
    3. Вычислить категорию.
    4. Взять GetEntryByKey
    5. Перебирать NotesViewEntry до достижения нужного.
    Во вьюху добавить скрытую колонку с юнидом и проверять ColumnValues(*).
    Кстати, почему юнид, можно обойтись и ноутИД.
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    с энтрисами именно по NotesViewEntry и ColumnValues м.б. засада...
    можно вьюнавигатор получить и преобразовать полученный GetEntryByKey в нафигаторовский, через GetEntry(entry)
    и далее бежать по нафигатору
     
  10. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    А можно создать новый вид, копированием исходного и вставкой колонки с UNID?
     
  11. soleil

    soleil Гость

    Дело в том что, вид обязательно должен быть с отображением иерархии (чтобы брать документы GetNextSibling). а если искать по униду то, как я понимаю, вид должен быть с отключенной иерархией и первой отсортированной колонкой.
    Может я неграмотно выразилась в постановке задачи, но, в любом случае, все решилась перебором. Спасибо всем за внимание.
     
  12. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    а это вам не поможет?
     
  13. soleil

    soleil Гость

    В силу того, что в лотусе я новичок, навигаторами не пользовалась.
    RAJ, спасибо за еще один способ. Буду знать.
     

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