Всем добрый день.
Есть две базы, условно №1 и №2.
В базе №1 пользователь нажимает кнопку примерно с таким
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">кодом</div></div><div class="sp-body"><div class="sp-content">
Собственно вопрос: возможно ли как то передать содержимое коллекции в Spofu папку, если она еще ни разу не открывалась пользователем не играясь с открытием/закрытием в воркспейсе?
Почему Call w.CurrentDatabase.Close отрабатывает так поздно?
Т.е. в том виде что у меня есть сейчас происходит следующее: при первом запуске идет в ошибку в Errh, там открывается папка в базе №2, туда передается коллекция, база не закрывается, поверх нее открвается диалог, пользователь что-то выбирает и только после этого закрывается и диалог и база №2. В идеале пользователь вообще не должен видеть открытия второй базы.
Есть две базы, условно №1 и №2.
В базе №1 пользователь нажимает кнопку примерно с таким
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">кодом</div></div><div class="sp-body"><div class="sp-content">
Код:
Sub Click(Source As Button)
Dim s As New NotesSession
Dim w As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidb As NotesUIDatabase
Dim docColl As NotesDocumentCollection
Dim view As NotesView
Dim uiview As NotesUIView
Dim SRVName As String
Dim DBPath As String
Dim picklist As Variant
Dim messagelist As String
On Error Goto ErrH
SRVName = "Server"
DBPath = "Folder\test.nsf"
Set uidb = w.CurrentDatabase
Set db = s.GetDatabase (SRVName, DBPath, False)
Set docColl = db.Search({SELECT Form="formPermit"}, Nothing, 0)
Call docColl.PutAllInFolder("SPOFU", True) 'при первом запуске в этом месте матюкается и идет в ErrH.
Continue:
Print "продолжил"
Set view = db.GetView ("SPOFU")
Call view.Refresh
picklist = w.PickListStrings (PICKLIST_CUSTOM, True, SRVName, DBPath, "SPOFU", "Заголовок", "Сообщение", 1)
If Not (Isempty (picklist) ) Then
Forall plist In picklist
messagelist = messagelist & plist & Chr(10)
End Forall
End If
Msgbox messagelist 'выбранные варианты возвращаются в месседж временно,потом это будет в док класться.
Exit Sub
ErrH:
Print "пошел в ошибку"
ERRNUM = Cstr(Err)
If Cstr(Err) = "4291" Then
Print "Ошибка №"+ERRNUM+" появилась первый раз."
Call w.OpenDatabase (SRVName, DBPath, "SPOFU", , True, True)
Call w.CurrentDatabase.Close 'вот этот шаг почему то выполняется уже после закрытия дайлогбокса.
Call docColl.PutAllInFolder("SPOFU", True)
Resume Continue
Else
Msgbox "Другая ошибка: №"+Cstr(Err)+" "+Error + ". Line "+Cstr(Erl)
Resume EndSub
End If
EndSub:
End Sub
Почему Call w.CurrentDatabase.Close отрабатывает так поздно?
Т.е. в том виде что у меня есть сейчас происходит следующее: при первом запуске идет в ошибку в Errh, там открывается папка в базе №2, туда передается коллекция, база не закрывается, поверх нее открвается диалог, пользователь что-то выбирает и только после этого закрывается и диалог и база №2. В идеале пользователь вообще не должен видеть открытия второй базы.