Действия При Открытии Бд

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

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Доброго времени суток.

    Есть код выполняемый при открытии БД, замечательно работающий.
    Есть почтовое сообщение в котором есть прямой линк на документ в этой БД, так вот при открытии документа по этой ссылке код на открытии БД не работает.
    Как можно побороть?
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Наверное только отлавливать событие открытия документа.
     
  3. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Так не интересно :rolleyes:
    И при открытии документа не получается определить была ли база открыта уже или нет(
     
  4. doka

    doka Well-Known Member

    Регистрация:
    18 фев 2010
    Сообщения:
    118
    Симпатии:
    0
    Установить переменную в notes.ini через SetEnvironment, и потом проверять её значение в событие открытия документа и открытия базы. Только тут нужно учитывать что, если за компьютером работают несколько пользователей, то и лотус должен стоять многопользовательский, а то работать не будет.


    P.S. это вариант если нужно узнать открывал ли пользователь эту базу когда-либо
     
  5. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    попробуй вызов при открытии документа с newInstance=False
    Код (Text):
    Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )
    или попробуй на QueryOpen документа:
    Код (Text):
    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    Dim WS As New NotesUIWorkspace
    Print WS.CurrentDatabase.Database.Title

    проверка WS.CurrentDatabase.Database.ReplicaID и Source.ParentDatabase.ReplicaID - должны быть одинаковы(не забывая проверку Is Nothing)

    End Sub
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Print WS.CurrentDatabase.Database выдаст object variable not set, если БД открыта "неправильно" - по ссылке из другой БД на документ в неоткрытой БД (что и есть у топикстартера) или при открытии через view-goto. Имхо, не стоит давать таких советов без указания необходимости обработки возможной ошибки.
     
  7. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    я указал в тексте в скобках: (не забывая проверку Is Nothing)
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Вообще надо плясать от назначения скрипта.

    Может уже тогда лучше использовать какую-то дополнительную базу, а не переменную окружения?
    Открыл базу - записался. Закрыл - удалился.
     
  9. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Это не будет работать... ИМХО
     
  10. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    я сначала проверил, открыл письмо со ссылкой и получил ReplicaID своей базы, так что ....
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Профиль в Cache.NDK, кмк, вполне достойная кандидатура. Но, согласен с NickProstoNick, плясать надо от задачи, а она не озвучена.
     
  12. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Код (Text):
        Dim WS As New NotesUIWorkspace
    Print WS.CurrentDatabase.Database.Title
    RAJ, то что надо. спасибо.




    Добавлено: Ну если интересно кому, обрисую всю ситуацию.

    После накатки обновления на БД (что происходит довольно часто) пользователю нужно переоткрыть базы (кеш кода, все дела), делать это нужно ненавязчиво, периодически напоминая о этом пользователю.

    решено так:
    В БД есть
    профайл БД - в котором храниться дата последнего обновления
    профайлы пользователей - в которых хранятся даты последнего открытия пользователем БД

    при открытии БД обновляем профайл пользователя.
    при открытии любого документа проверяем даты, и выдаем пользователю соответствующее сообщение если требуется.
     
  13. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    эм.... не думаю что удачное решение...
    Загаживать базу профайлами... не очень люблю я их.
    А по сути - то как я и говорил. Зашел - записался...
     
Загрузка...

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