Opendatabase

Тема в разделе "Lotus - Программирование", создана пользователем kilcher, 6 мар 2008.

  1. kilcher

    kilcher Гость

    Добрый день! :( Хочу спросить у вас совета. Мне необходимо использовать документы,допустим, из базы "Кадры" в базе "Договора". Я как обычно выбираю коллекция документов и работаю с ними. Но так как я использую не текущую базу,то конструкция
    On Error Goto Errh
    Dim reviewCol As NotesDocumentCollection
    Dim reviewDoc As NotesDocument
    Dim ws As New NotesUIWorkspace
    Dim reviewdb As NotesDatabase, db As NotesDatabase
    Set reviewdb = ws.currentDatabase.Database
    Dim doc As NotesDocument
    Dim i As Long
    Dim IsNameListEmpty As Variant
    Dim uidoc As NotesUIDocument
    не подходит. Вместо
    Dim ws As New NotesUIWorkspace
    Dim reviewdb As NotesDatabase, db As NotesDatabase
    Set reviewdb = ws.currentDatabase.Database
    Я использую
    Dim dir As NotesDbDirectory
    Dim reviewdb As NotesDatabase, db As NotesDatabase
    Set reviewdb = dir.OpenDatabase("kadry.nsf")
    Но это не верно. Так в чем ошибка? Я ведь просто открываю базу по имени
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Про пост: обрами код тегами.

    Посмотри для начала
    Dim Db as New NotesDatabase(SERVER, PATH)
    И
    Session.GetDatabase
     
  3. Sandr

    Sandr Гость

    Код (Text):
    Dim reviewdb As NotesDatabase("", "")
    reviewdb.Open( "", "kadry.nsf")
    Учтите, что это будет работать если kadry.nsf находится в корне папки data, если не в корне, то путь (2-й параметр в Open) должен быть относительно папки data...
     
  4. kilcher

    kilcher Гость

    Сделала так
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim dbName As String
    dbName = "Kadry.nsf"
    Dim db As New NotesDatabase( "Phantom", "testsalbase\Kadry.nsf" )
    Set db = session.GetDatabase( "Phantom", dbName)
    Call db.Open( "", "" )
    End Sub
    Ничего не происходит :( Я так понимаю должна открыться база
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    kilcher
    Вот так:
    Код (Text):
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim dbName As String
    dbName = "Kadry.nsf"
    Set db = session.GetDatabase( "Phantom", dbName, False)
    If Not (db is nothing) then
    ...
    end if
    End Sub
     
  6. K-Fire

    K-Fire Гость

    Эта задача решается 1 раз, и потом используется везде где только можно.
    Алгоритм:
    1. Создается документ настроек. В нем создается поле (или поля) хранящее путь до другой базы.
    2. Пишется функция которая ищет этот документ настроек.
    3. Пишется функция getKadryDatabase(), которая возвращает ссылку на базу.

    Пример:
    Код (Text):
    Function GetOrgDb() As NotesDatabase
    Dim sess As New NotesSession
    Dim db As NotesDatabase
    Set db = sess.CurrentDatabase
    Dim osdoc As NotesDocument
    Set osdoc = GetApplicationProfileDoc()
    If Not osdoc Is Nothing Then
    Set db = sess.GetDatabase(db.Server, osdoc.OrgPath(0), False)
    If Not db Is Nothing Then
    If db.IsOpen Then
    Set GetOrgDb = db
    Else
    Set GetOrgDb = Nothing
    End If
    Else
    Set GetOrgDb = Nothing
    End If     
    Else
    Set GetOrgDb = Nothing
    End If


    End Function
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Забыл еще:
    Dim db As NotesDatabase
     
  8. kilcher

    kilcher Гость




    GetApplicationProfileDoc на это выдает ошибку.
     
  9. Sandr

    Sandr Гость

    Не используйте чужие коды бездумно.. это просто пример.

    Код (Text):
    Sub Click(Source As Button)
    Dim db As NotesDatabase
    Dim session As New NotesSession
    Dim dbName As String
    dbName = "Kadry.nsf"
    Set db = session.GetDatabase( "Phantom", dbName, False)
    If Not (db is nothing) then
    ...
    end if
    End Sub
    этого Вам более чем достаточно
     
  10. kilcher

    kilcher Гость

    Спасибо,но так я уже делала-ничего не происходит
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А что должно быть?
     
  12. kilcher

    kilcher Гость

    я тормоз.В скриптах запуталась в конец! на формулах проще. Вобще то мне надо создать коллекцию доков.Но как я понимаю это делается с помощью NotesUIWorkspace,а открытие базы с помощью NotesSession. Т.е. сначала я открываю базу,а затем создаю рабочую область в которой отбираю документы?
     
  13. Sandr

    Sandr Гость

    коллекцию через NotesUIWorkspace? Что-то новое...
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Может тебе нужно notesUIWorkspace.PickListCollection ?
    В параметрах база указывается.
     
  15. kilcher

    kilcher Гость

    Пример из help
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim collection As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim item As NotesItem
    Set db = session.CurrentDatabase
    Set collection = workspace.PickListCollection( _
    PICKLIST_CUSTOM, _
    True, _
    "snapper", _
    "ProgWork2", _
    "By Author", _
    "My Dialog", _
    "Please select a document or two." )
     
  16. Sandr

    Sandr Гость

    kilcher
    Вот, Вам только Set db = session.CurrentDatabase нужно по своему обработать, тоесть получить его указынным выше способом
     
  17. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    kilcher
    И в чем проблемы?
     
  18. kilcher

    kilcher Гость

    База лежит не корне сервера. Может поэтому не работает и надо в
    Set db = session.GetDatabase( "Phantom", dbName, False) добавить путь?
     
  19. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Сервер и базу надо указывать в notesUIWorkspace.PickListCollection. Остальное не нужно.
     
  20. kilcher

    kilcher Гость


    Усе разобралась наконец! Надо было путь подробный указать. Еще раз убеждаюсь,что лучше не мудрить.а делать все проще,как с первого раза приходит в голову.СПАСИБО ЗА ТЕРПЕНИЕ И ПОМОЩЬ!!!! :)
     

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