Opendatabase

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

kilcher

Гость
#1
Добрый день! :( Хочу спросить у вас совета. Мне необходимо использовать документы,допустим, из базы "Кадры" в базе "Договора". Я как обычно выбираю коллекция документов и работаю с ними. Но так как я использую не текущую базу,то конструкция
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")
Но это не верно. Так в чем ошибка? Я ведь просто открываю базу по имени
 
S

Sandr

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

kilcher

Гость
#4
Сделала так
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
Ничего не происходит :( Я так понимаю должна открыться база
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#5
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
 
K

K-Fire

Гость
#6
Эта задача решается 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
 
K

kilcher

Гость
#8
Эта задача решается 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 на это выдает ошибку.
 
S

Sandr

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

Код:
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
этого Вам более чем достаточно
 
K

kilcher

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

Код:
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
этого Вам более чем достаточно
Спасибо,но так я уже делала-ничего не происходит
 
K

kilcher

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#14
я тормоз.В скриптах запуталась в конец! на формулах проще. Вобще то мне надо создать коллекцию доков.Но как я понимаю это делается с помощью NotesUIWorkspace,а открытие базы с помощью NotesSession. Т.е. сначала я открываю базу,а затем создаю рабочую область в которой отбираю документы?
Может тебе нужно notesUIWorkspace.PickListCollection ?
В параметрах база указывается.
 
K

kilcher

Гость
#15
коллекцию через 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." )
 
S

Sandr

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#19
База лежит не корне сервера. Может поэтому не работает и надо в
Set db = session.GetDatabase( "Phantom", dbName, False) добавить путь?
Сервер и базу надо указывать в notesUIWorkspace.PickListCollection. Остальное не нужно.
 
K

kilcher

Гость
#20
Сервер и базу надо указывать в notesUIWorkspace.PickListCollection. Остальное не нужно.

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