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

Omh

Lotus team
04.07.2007
2 210
1
#2
Про пост: обрами код тегами.

Посмотри для начала
Dim Db as New NotesDatabase(SERVER, PATH)
И
Session.GetDatabase
 
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
1
#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
1
#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 нужно по своему обработать, тоесть получить его указынным выше способом
 
K

kilcher

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

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