1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

  1. Dragon108

    Dragon108 Well-Known Member

    Репутация:
    0
    Регистрация:
    19 янв 2010
    Сообщения:
    265
    Симпатии:
    0
    Есть форма, в ней есть кнопка, по клику на кнопку необходимо лезть в другую базу на том же сервере и искать там данные. Не могу подрубиться к базе. Выдает ошибку "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, а потом ошибку, описанную выше. Т.е получается что вроде как бд то по указанному пути и с указанным именем есть, но дальше по коду не может к ней подключиться. Хелп плиз
     
  2. Omh

    Omh Well-Known Member
    Lotus team

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

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

    hosm * so what *

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

    RAJ Well-Known Member

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

    Dragon108 Well-Known Member

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

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


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

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

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

    Omh Well-Known Member
    Lotus team

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

    alik86 Well-Known Member
    Lotus team

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

    hosm * so what *

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

    Dragon108 Well-Known Member

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

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

    hosm * so what *

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

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

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

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