Доступ к адресной книге

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

  1. V

    V Гость

    Добрый день! Вот решил обратиться к Вам за советом.
    Есть необходимость обратиться к данным в адресной книге в определенной базе, вот что я делаю:
    Dim session As New NotesSession
    Dim db As New NotesDatabase
    session.initialize()
    set db=session.GetDatabase("", "AK.nsf")
    далее по идее есть свойство AddressBook у session, но вот только с типом Variant и как к нему обращаться не совсем понятно, либо же копать через db но вот только как? Вот в принципе сама проблема)
    Заранее спасибо!
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Это не вариант, а Array of NotesDatabase. В хелпе всё написано.
     
  3. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    есть еще нюанецы :D
    Код (Text):
    Dim dbNames() As String
    Dim dbs() As NotesDatabase
    Sub Initialize
    Dim session As New NotesSession
    Dim books As Variant
    books = session.AddressBooks
    i=0
    server=""
    Forall b In books
    If ( b.IsPublicAddressBook ) And ( Not done ) Then
    Redim Preserve dbNames(i)
    Redim Preserve dbs(i)
    Call b.Open( "", "" )
    If i=0 Then
    server=b.Server
    End If
    If b.Title="" Then
    Call b.Open(server,b.fileName)
    End If
    dbNames(i)=b.Title
    Set dbs(i)=b
    i=i+1          
    End If
    End Forall
    Print "Init Form"
    End Sub
    в PostOpen
    Код (Text):
        If Source.EditMode Then
    Print "Open with Edit mode"
    Call Source.Document.ReplaceItemValue("dbListNames",dbNames)
    Call Source.Refresh(True)
    End If

    ну и на форме контролs (поля):
    -компутед вен композе dbListNames
    -компутед фор дисплэй list, с формулой dbListNames
    -комбик в формулой списка list
     
  4. V

    V Гость

    ага, сенкс - нашел и подключился именно к адресной книге, но где именно хранится необходимая информация?
    Вот что в хелпе:
    Dim session As New NotesSession
    Dim books As Variant
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim done As Variant
    Dim person As String
    books = session.AddressBooks
    done = False
    person = Inputbox$ _
    ( "Enter the last name of the person: ", "Last name" )
    Forall b In books
    ' check every Domino Directory,
    ' unless we're already done
    If ( b.IsPublicAddressBook ) And ( Not done ) Then
    Call b.Open( "", "" )
    ' look up person's last name
    ' in People view of address book
    Set view = b.GetView( "People" )
    Set doc = view.GetDocumentByKey( person )
    ' if person is found, display the phone number item
    ' from the Person document
    If Not ( doc Is Nothing ) Then
    Messagebox( "Phone for " + person _
    + " is " + doc.OfficePhoneNumber( 0 ) )
    done = True
    End If
    End If
    End Forall
    ' if done is still False, the person wasn't found
    If Not done Then
    Messagebox _
    ( "Sorry, unable to locate person's name." )
    End If
    End Sub

    И если передавать фамилию существующего контакта объект не создается..и откуда взялось свойство OfficePhoneNumber?
     
  5. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    смотря где искать ключ ;)
    есть служебные вьюшки (типа $Users) - там будет искать по фамилии
    но могут быть траблы с альтернативными "именами"
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    молодой человек, вы уж извините, но мы старые, и не всегда уже понимаем по двум словам, в чем суть задачи ;)

    любой итем в документе может быть прочтен и записан в т.з. кратком виде, т.е.
    Код (Text):
    someVariable = doc.GetItemValue("someItem")(0)
    call doc.ReplaceItemValue("someItem", someVariable)
    аналогично
    Код (Text):
    someVariable = doc.someItem(0)
    doc.someItem = someVariable
    но я бы рекомендовал использовать первый стиль, так более строго (и понятней ;))
     
  7. V

    V Гость

    о-да, всем спасибо-получилось.
    Akupaka , под необходимой информацией я имел ввиду все данные которые имеют отношение к контакту из адресной книги - именно их я и получил, спасибо за подсказку). И сразу возник следующий вопрос-нельзя ли получить сразу весь необходимый объект (тот же контакт из адресной книги) в формате xml? вроде, написано, что парсер есть для xml, но о выгрузке в xml ничего не написано...
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Vаder
    Надо засунуть документ в NotesDXLExporter
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Vаder, нельзя в разговоре с ООПшниками употр*цензура*ть слово объект без конкретного указания типа, иначе они впадут в вечный цикл, пытаясь привести типы ;)
    данные о контакте можно получить в виде XML либо преобразовав весь документ, как указал Omh, либо можно сформировать XML самостоятельно, если все поля из документа не нужны, а их там не мало "лишних", либо используя классы NotesDXLxxx, либо самому в файлик писать как надо...
     
  10. V

    V Гость

    всем спасибо, все получилось)
     
Загрузка...

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