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

seoman2

Lotus team
17.02.2010
458
1
#1
Кто подскажет, почему


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 131
102
#2
Режим К.О.-ON: Потому что не открыта.
как объект CurDB получил? Проверку на открытие поставил?
 

seoman2

Lotus team
17.02.2010
458
1
#3
Set CurDB=Session.CurrentDataBase

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

savl

Lotus team
28.10.2011
2 131
102
#4
ну вот, попробуй так:
Код:
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 в помощь.
 

hosm

* so what *
18.05.2009
2 442
6
#5
не уверена, что даст открыть в режиме чтения созданный и несохраненный документ. проверьте наличие сейва
 

seoman2

Lotus team
17.02.2010
458
1
#6
База открывается, а проблема именно в
Call uiworkspace.EditDocument(False,RDoc)
Временный док открывается, но с варнингом.
Видимо нельзя открывать на эдит просто так несохраненный док
 

savl

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

divankin

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

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

savl

Lotus team
28.10.2011
2 131
102
#10
при сохранении RDoc выдаст ошибку, что такой документ уже есть в БД
В чем скрытый смысл данного подхода?
Возможность сохранить его как новую версию?

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

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