Opendatabase

  • Автор темы Автор темы kilcher
  • Дата начала Дата начала
K

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")
Но это не верно. Так в чем ошибка? Я ведь просто открываю базу по имени
 
Про пост: обрами код тегами.

Посмотри для начала
Dim Db as New NotesDatabase(SERVER, PATH)
И
Session.GetDatabase
 
Код:
Dim reviewdb As NotesDatabase("", "")
reviewdb.Open( "", "kadry.nsf")

Учтите, что это будет работать если kadry.nsf находится в корне папки data, если не в корне, то путь (2-й параметр в Open) должен быть относительно папки data...
 
Сделала так
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
Ничего не происходит :( Я так понимаю должна открыться база
 
kilcher
Вот так:
Код:
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
 
Эта задача решается 1 раз, и потом используется везде где только можно.
Алгоритм:
1. Создается документ настроек. В нем создается поле (или поля) хранящее путь до другой базы.
2. Пишется функция которая ищет этот документ настроек.
3. Пишется функция getKadryDatabase(), которая возвращает ссылку на базу.

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

Пример:
Код:
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




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

Код:
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

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

Код:
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

этого Вам более чем достаточно

Спасибо,но так я уже делала-ничего не происходит
 
А что должно быть?

я тормоз.В скриптах запуталась в конец! на формулах проще. Вобще то мне надо создать коллекцию доков.Но как я понимаю это делается с помощью NotesUIWorkspace,а открытие базы с помощью NotesSession. Т.е. сначала я открываю базу,а затем создаю рабочую область в которой отбираю документы?
 
коллекцию через NotesUIWorkspace? Что-то новое...
 
я тормоз.В скриптах запуталась в конец! на формулах проще. Вобще то мне надо создать коллекцию доков.Но как я понимаю это делается с помощью NotesUIWorkspace,а открытие базы с помощью NotesSession. Т.е. сначала я открываю базу,а затем создаю рабочую область в которой отбираю документы?
Может тебе нужно notesUIWorkspace.PickListCollection ?
В параметрах база указывается.
 
коллекцию через NotesUIWorkspace? Что-то новое...
Пример из 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." )
 
kilcher
Вот, Вам только Set db = session.CurrentDatabase нужно по своему обработать, тоесть получить его указынным выше способом
 
Сервер и базу надо указывать в notesUIWorkspace.PickListCollection. Остальное не нужно.


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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab