• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

Kizarek86

Green Team
20.07.2007
871
7
BIT
37
Доброго времени суток.

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Наверное только отлавливать событие открытия документа.
 
D

doka

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


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

RAJ

попробуй вызов при открытии документа с 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
 
H

hosm

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Вообще надо плясать от назначения скрипта.

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
или попробуй на 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
Это не будет работать... ИМХО
 
N

nvyush

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

Kizarek86

Green Team
20.07.2007
871
7
BIT
37
Код:
	Dim WS As New NotesUIWorkspace
Print WS.CurrentDatabase.Database.Title

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




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

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

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

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
эм.... не думаю что удачное решение...
Загаживать базу профайлами... не очень люблю я их.
А по сути - то как я и говорил. Зашел - записался...
 
Мы в соцсетях:

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