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

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

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

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

Еще Раз О Database Has Not Been Opened Yet

seoman2

Green Team
17.02.2010
504
1
BIT
45
Кто подскажет, почему


Dim RDoc As NotesDocument
Set RDoc=CurDB.CreateDocument
RDoc.UniversalID=CurDoc.UniversalID
Call CurDoc.Copyallitems(RDoc,False)
RDoc.BasicForm=RDoc.Form
RDoc.Form=FormName$
RDoc.SaveOptions="0"

Dim uiworkspace As New NotesUIWorkspace
Call uiworkspace.EditDocument(False,RDoc) - эта строка выдает ошибку database has not been opened yet
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
Режим К.О.-ON: Потому что не открыта.
как объект CurDB получил? Проверку на открытие поставил?
 

seoman2

Green Team
17.02.2010
504
1
BIT
45
Set CurDB=Session.CurrentDataBase

В дебагере вижу, что CurDB присваивается текущая база. Проверки не ставил.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
ну вот, попробуй так:
Код:
if CurDB.IsOpen then
Dim RDoc As NotesDocument
Set RDoc=CurDB.CreateDocument
RDoc.UniversalID=CurDoc.UniversalID
Call CurDoc.Copyallitems(RDoc,False)
RDoc.BasicForm=RDoc.Form
RDoc.Form=FormName$
RDoc.SaveOptions="0" 
....
Else
Error 5002, "База недоступна, имя: " & CurDB.Title
End if
Многие вещи с NotesDatabase нельзя проводить, пока она не открыта. Lotus help по Designer в помощь.
 
H

hosm

не уверена, что даст открыть в режиме чтения созданный и несохраненный документ. проверьте наличие сейва
 

seoman2

Green Team
17.02.2010
504
1
BIT
45
База открывается, а проблема именно в
Call uiworkspace.EditDocument(False,RDoc)
Временный док открывается, но с варнингом.
Видимо нельзя открывать на эдит просто так несохраненный док
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
Видимо нельзя открывать на эдит просто так несохраненный док
Да, такое есть, но сообщение обычно другое:
---------------------------
Error
---------------------------
Unable to find Document Window
---------------------------
ОК
---------------------------
Что и смутило.
 
D

divankin

Видимо нельзя открывать на эдит просто так несохраненный док

C каких это пор нельзя?
Есть баг во фреймах, что нельзя открыть во фрейме не сохраненный документ.
Попробуйте выполнить такой код вне всяких фреймсетов, просто агентом из дизайнера.

Еще смутила строка
RDoc.UniversalID=CurDoc.UniversalID
Откуда берется CurDoc? Может ли в текущей базе уже существовать документ с таким UNID? Что будет если закомментарить эту строку?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
180
при сохранении RDoc выдаст ошибку, что такой документ уже есть в БД
В чем скрытый смысл данного подхода?
Возможность сохранить его как новую версию?

Код:
Call uiworkspace.EditDocument(False,RDoc)
Открывает на чтение
Код:
Call uiworkspace.EditDocument(True,RDoc)
Открывает на редактирвоание

UPD: Проверил. Сохранился без ошибки, а раньше ругался... но UniversalID сменился и все равно не тот, что у первоначального... (8.5.3FP4)
 
Мы в соцсетях:

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