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

Тема в разделе "Lotus - Программирование", создана пользователем Dragon108, 15 окт 2010.

  1. Dragon108

    Dragon108 Well-Known Member

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

    Вот код:

    Код (LotusScript):
    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, а потом ошибку, описанную выше. Т.е получается что вроде как бд то по указанному пути и с указанным именем есть, но дальше по коду не может к ней подключиться. Хелп плиз
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну может прав на базу нет.

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    проверь db.IsOpen или юзай параметр:
     
  4. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    -- опоздал
     
  5. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0

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


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

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    фраза означает что небыло команды db.Open - а я её таки НЕ было
    так как базу к примеру можно взять чтобы лишь прочесть её свойства а не полезая внутрь её, это было сделано для тобо, чтобы можно было очень быстро перебирать базы по каталогу
    рекомендую для нормального использования БД действовать только так
    Код (LotusScript):
    Dim tmpdb As NotesDatabase
    Set tmpdb = New NotesDatabase("", "")
    Call tmpdb.Open(Server, File) ' открываем
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ToxaRat
    У нас сеймшитовый подход :welcome:
     
  8. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    А мне нравицца OpenByReplicaID method.
     
  9. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    между прочим, ее в случае GetDatabase и не надо =)
    а в данном случае у автора просто не смогла открыть - мб, сервер-база были неправильные, прав не было или связи с сервером.
    И db.Open может не помочь в данном случае.
     
  10. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0

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

    hosm * so what *

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Database has not been opened yet проявлялась периодически при вызове notesDatabase.OpenMail (предполагаю, что GetDatabase тоже косая...), всегда лечилось кодом, который давал Omh и ToxaRat. Более того в таком коде такая ошибка у меня не возникала никогда, - там генерятся нормальные осмысленные ошибки на каждую ситуацию.
     
Загрузка...

Поделиться этой страницей