Queryaddtobinder и Getbinderbyid

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

Статус темы:
Закрыта.
  1. SkinGreek

    SkinGreek Гость

    Всем добрый вечер.

    Сново столкнулся с непонятной проблемой.
    В Document manager есть нечто подобие событий и возможность их обработки. Я пытаюсь обработать событие QueryAddToBinder(ddoc As DocDocument, BinderID As String, Continue As Integer).
    Казалось бы задача проста, BinderID передается, метод GetBinderById существует у объекта библиотеки, в общем проблем не ожидается... как и обычно и бывает)) Но лотус оказался хитрее и вывел сообщение о не найденной подшивке в данном коде.
    Код (Text):
      Set theCurrentBinder = theLibrary.GetBinderById(BinderID)
    после часа мучений всеж решился вывести всю библиотеку
    Код (Text):
        For i =0 To theLibrary.Cabinets.Count  
    Set cabinet = theLibrary.Cabinets.ItemByIndex(i)
    Print "cabinet: ID=" & cabinet.id & " Title=" & cabinet.Title & " index=" & i
    For j =0 To cabinet.Binders.Count-1
    Dim binder As Variant
    Set binder = theLibrary.Cabinets.ItemByIndex(i).Binders.ItemByIndex(j)
    Print "   binder: ID=" & binder.id & " Title=" & binder.Title
    Next
    Next
    и оказалось что binder.id на самом деле равен cabinet.id & BinderID. то есть binder.id == cabinet.id & BinderID
    где BinderID - передаваемый параметр в обработчик события QueryAddToBinder
    Как определить нормальный BinderID который необходимо для GetBinderById я не нашел потому и прошу помощи
    попытался посмотреть полный BinderID через DocDocument.ParentBinderID, но как и ожидалось он вернул мне 0(событие всеж Query)
    как в примере хелпа предполагают текущую секцию (Cabinet) мне не нравится, ибо по Title определять cabinet.id, мне кажеться слишком сурово (не уверен, но предполагаю что Title у секции не уникален)

    Собственно вот, суть проблемы изложил.надеюсь не сильно запутанно:$
    Есть у кого идеи как бороться с этим совершенно неожиданной проблемой?
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ну, если BinderID это строка постоянной величины, то можно взять кол-во символов
    Right(binderID, BinderLength)
     
  3. SkinGreek

    SkinGreek Гость

    нет, в том то и дело что BinderID, передаваемый мне в качестве параметра это лишь часть полного ID подшивки. Опытным путем я увидел, что полный ID подшивки(который и необходим методу GetBinderById в качестве параметра) равняется ID секции(cabinet) + BinderID(fullBinderID = CabinetID + BinderID).Видно что данных они пожалели при передаче параметров в обработчик события. В примере к QueryAddToBinder СabinetID получают весьма извращенным способом через Title секции. Я не думаю что это серьезно, так как уверен что Title секции не может быть уникальным(исхожу их обычной пользовательской логики)
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ой, сори, я видать запутался во всех тех binderId :rolleyes: в Вашем предыдущем посте...
     
Статус темы:
Закрыта.

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