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

  • Автор темы Автор темы Kizarek86
  • Дата начала Дата начала

Kizarek86

Green Team
20.07.2007
875
8
BIT
139
Доброго времени суток.

Есть код выполняемый при открытии БД, замечательно работающий.
Есть почтовое сообщение в котором есть прямой линк на документ в этой БД, так вот при открытии документа по этой ссылке код на открытии БД не работает.
Как можно побороть?
 
Наверное только отлавливать событие открытия документа.
 
Установить переменную в notes.ini через SetEnvironment, и потом проверять её значение в событие открытия документа и открытия базы. Только тут нужно учитывать что, если за компьютером работают несколько пользователей, то и лотус должен стоять многопользовательский, а то работать не будет.


P.S. это вариант если нужно узнать открывал ли пользователь эту базу когда-либо
 
попробуй вызов при открытии документа с newInstance=False
Код:
Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )

или попробуй на QueryOpen документа:
Код:
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
 
Print WS.CurrentDatabase.Database выдаст object variable not set, если БД открыта "неправильно" - по ссылке из другой БД на документ в неоткрытой БД (что и есть у топикстартера) или при открытии через view-goto. Имхо, не стоит давать таких советов без указания необходимости обработки возможной ошибки.
 
Вообще надо плясать от назначения скрипта.

Может уже тогда лучше использовать какую-то дополнительную базу, а не переменную окружения?
Открыл базу - записался. Закрыл - удалился.
 
или попробуй на QueryOpen документа:
Код:
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
Это не будет работать... ИМХО
 
Может уже тогда лучше использовать какую-то дополнительную базу, а не переменную окружения?
Открыл базу - записался. Закрыл - удалился.
Профиль в Cache.NDK, кмк, вполне достойная кандидатура. Но, согласен с NickProstoNick, плясать надо от задачи, а она не озвучена.
 
Код:
	Dim WS As New NotesUIWorkspace
Print WS.CurrentDatabase.Database.Title

RAJ, то что надо. спасибо.




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

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

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

при открытии БД обновляем профайл пользователя.
при открытии любого документа проверяем даты, и выдаем пользователю соответствующее сообщение если требуется.
 
эм.... не думаю что удачное решение...
Загаживать базу профайлами... не очень люблю я их.
А по сути - то как я и говорил. Зашел - записался...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!