Как взять Unid самого главного родителя?

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

  1. oxystile

    oxystile Гость

    Доброго времени суток!
    Как взять unid самого главного родителя если неизвестно заранее количество ступеней в иерархии?

    рекурсия?
    спасибо!
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Не обязательно рекурсия.
    Обычным циклом(While..Wend) можно.
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    рекурсия
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    while doc.IsResponse
    set doc = db.GetDocumentByUNID( doc.parentDocumentUNID )
    wend

    это я на скорую руку написал
    doc - NOtesDocument
    db - NOtesDatabase
     
  5. oxystile

    oxystile Гость

    еще вот вопрос назрел, если так
    while doc.IsResponse
    set doc = db.GetDocumentByUNID( doc.parentDocumentUNID )
    wend
    то как проверить случаи несушествования документов? ссылка на родителя есть, а самого родителя нету?
    спасибо!
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Код (Text):
    Function GetDocByUNID(db As NotesDatabase, doc As NotesDocument, UNID As String) As Boolean
    On Error Goto Errh

    GetDocByUNID = False

    If db Is Nothing Then Exit Function
    If Trim$(UNID) = "" Then Exit Function

    On Error Resume Next
    Set doc = db.GetDocumentByUNID(UNID)
    On Error Goto Errh

    If Not doc Is Nothing Then GetDocByUNID = True

    Exit Function
    Errh:
    Call ErrHandler
    Exit Function
    End Function
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    oxystile
    http://codeby.net/forum/threads/22588.html

    Код (Text):
    Do While doc.IsResponse  
    set doc = GetDocByUNIDA(db, doc.parentDocumentUNID )
    if doc is nothing then exit do
    if Not doc.IsVAlid then exit do
    Loop
     
  8. oxystile

    oxystile Гость

    спасибо!!!!! :(

    а в цикле Do While doc.IsResponse ...
    наверно, проверка на валидность уже не нужна, т.к.
    она уже присутствует GetDocByUNIDA:
    If Not GetDocByUNIDA.IsValid Then Set GetDocByUNIDA = Nothing
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    у принципе да... если невалидный, то вернёт ничто...
     
Загрузка...

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