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

Omh

Про пост: обрами код тегами.

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

Sandr

Код:
Dim reviewdb As NotesDatabase("", "")
reviewdb.Open( "", "kadry.nsf")

Учтите, что это будет работать если kadry.nsf находится в корне папки data, если не в корне, то путь (2-й параметр в Open) должен быть относительно папки data...
 
K

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
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

Эта задача решается 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

Эта задача решается 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

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

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

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

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

А что должно быть?

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

Sandr

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
я тормоз.В скриптах запуталась в конец! на формулах проще. Вобще то мне надо создать коллекцию доков.Но как я понимаю это делается с помощью NotesUIWorkspace,а открытие базы с помощью NotesSession. Т.е. сначала я открываю базу,а затем создаю рабочую область в которой отбираю документы?
Может тебе нужно notesUIWorkspace.PickListCollection ?
В параметрах база указывается.
 
K

kilcher

коллекцию через 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

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

kilcher

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


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!