Подрубиться из одной базы к другой

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

Dragon108

Есть форма, в ней есть кнопка, по клику на кнопку необходимо лезть в другую базу на том же сервере и искать там данные. Не могу подрубиться к базе. Выдает ошибку "Database has not been opened yet"

Вот код:

Код:
Sub Click(Source As Button)

Dim session As New NotesSession
Dim db As NotesDatabase
Dim unid As String	

Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
unid = doc.UniversalID


Set db =session.getDatabase(SERVER, PATH)


If db Is Nothing Then
Msgbox("0")
Else
Msgbox("1")
End If


// далее поиск по вью в другой базе
Dim view As NotesView

Set view =db.GetView("unidof_work")

Dim coll As NotesDocumentCollection
Set coll = view.GetAllDocumentsByKey( "unid" )
Msgbox(coll.count)

...	

End Sub

Выдает 1, а потом ошибку, описанную выше. Т.е получается что вроде как бд то по указанному пути и с указанным именем есть, но дальше по коду не может к ней подключиться. Хелп плиз
 
O

Omh

Ну может прав на базу нет.

Я бы делал так:
Код:
Dim OthDb As New NotesDatabase("", "")
Call OthDb.Open(Server, Path)
if OthDb.IsOpen then
'понеслась косая в баню!
End if
 
H

hosm

проверь db.IsOpen или юзай параметр:
A NotesDatabase object that can be used to access the database you've specified, or Nothing if the database cannot be opened and createonfail is False. If the database cannot be opened and createonfail is True or omitted, IsOpen is false for the NotesDatabase object.
 
D

Dragon108

Ну может прав на базу нет.

Я бы делал так:
Код:
Dim OthDb As New NotesDatabase("", "")
Call OthDb.Open(Server, Path)
if OthDb.IsOpen then
'понеслась косая в баню!
End if


Права есть.
Не досмотрел кое что, параметр не дописал
из хелпа:

This agent gets a database, creating a NotesDatabase object only if the database exists and can be opened. The agent tests to see if the NotesDatabase object was created.
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Set db = s.GetDatabase("snapper", "names2", False)
If db Is Nothing Then
Messagebox "names2.nsf does not exist on snapper"
Else
Messagebox db.Title,, "Title of names2.nsf"
End If
End Sub


Добавлено: Вощем пардон, тупанул. проблема решена
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Database has not been opened yet
фраза означает что небыло команды db.Open - а я её таки НЕ было
так как базу к примеру можно взять чтобы лишь прочесть её свойства а не полезая внутрь её, это было сделано для тобо, чтобы можно было очень быстро перебирать базы по каталогу
рекомендую для нормального использования БД действовать только так
Код:
Dim tmpdb As NotesDatabase
Set tmpdb = New NotesDatabase("", "")
Call tmpdb.Open(Server, File) ' открываем
 
O

Omh

ToxaRat
У нас сеймшитовый подход :welcome:
 
H

hosm

фраза означает что небыло команды db.Open - а я её таки НЕ было
между прочим, ее в случае GetDatabase и не надо =)
GetDatabase
Creates a NotesDatabase object that represents the database located at the server and file name you specify, and opens the database, if possible.
а в данном случае у автора просто не смогла открыть - мб, сервер-база были неправильные, прав не было или связи с сервером.
И db.Open может не помочь в данном случае.
 
D

Dragon108

между прочим, ее в случае GetDatabase и не надо =)

а в данном случае у автора просто не смогла открыть - мб, сервер-база были неправильные, прав не было или связи с сервером.
И db.Open может не помочь в данном случае.


Я менеджер бд и там и там. Все пути вроде правильные. Связь есть, на базу зайти могу, есть ещё какие-нибудь варианты?
 
H

hosm

попробовать явно указать сервер текущей БД в команде Getdatabase.
проверить, правильно ли указали базу - путь относительно серверной data с указанием БД.
Вывести в мессаджбокс пути. проверить наличие русских букв и прочей гадости.
выйти и зайти :)))
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
232
Database has not been opened yet проявлялась периодически при вызове notesDatabase.OpenMail (предполагаю, что GetDatabase тоже косая...), всегда лечилось кодом, который давал Omh и ToxaRat. Более того в таком коде такая ошибка у меня не возникала никогда, - там генерятся нормальные осмысленные ошибки на каждую ситуацию.
 
Мы в соцсетях:

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