Openmail

wowa

Well-known member
01.02.2007
845
0
#1
Добрый день!

Есть кусок кода.
Код:
Dim dbMail As New NotesDatabase( "", "" )
Call dbMail.OpenMail()
Год все работало нормально, тут у одного человека где-то выскочила ошибка. На какой строчке я не знаю.
Ошибка:
Database CN=.../..../...!!mail/....nsf has not been opened yet
Что можно сделать чтобы этой ошибки не было и все-таки из-за чего она возникает?
вроде у человека почта есть, доступ есть и т.д.
 

nvyush

Lotus team
22.04.2009
2 317
0
#2
Похоже, ошибка где-то ниже. Стоит добавить проверку на dbMail.IsOpen
 

wowa

Well-known member
01.02.2007
845
0
#3
nvy, ну ошибка будет полюбому ниже.
Но почему его почтовая база не открылась?
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#4
если локейшин не настроен ошибка должна быть полюбому :)
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#5
wowa
Ошибка иногда возникает даже если локейшен настроен правильно... объяснить это невозможно, этот баг я помню ещё с 5-й версии...
Решение - не юзать глючную OpenMail, а что-то типа этого:
Код:
'Библиотека MailBase
Option Public

Const FND_APPOINTMENT = "Appointment"
Const FND_REPLY = "Reply"
Const FND_MEMO = "Memo"
Const IN_MEMO_SUBJECT = "Subject"
Const IN_MEMO_BODY = "Body"
Const IN_MEMO_SENDTO = "SendTo"


Function ConnectMaildb(Server As String, dbPathFull As String) As NotesDatabase
Dim NDB_Mail As NotesDatabase
On Error Goto ErrH

'Подключаемся как к обычной БД, чтобы обойти сообщение "БД сейчас не может быть открыта..." ("Db has not been opened yet")
Set NDB_Mail = New NotesDatabase(Server, dbPathFull)

If NDB_Mail.IsOpen Then
Set ConnectMaildb = NDB_Mail
Exit Function
Else
Error 4063, {Почтовая база "} + dbPathFull + {" на сервере "} + Server + {" не может быть открыта... Проверьте настройки текущего места вызова!}
End If

ErrH:
If Err = 4060 Then
ErrMSG$ = {Отсутствует доступ к почтовой базе "} + dbPathFull + {" на сервере "} + Server + {"... Измените текущее место вызова!}
Else
ErrMSG$ = Error$ & " (" & Err & "), in line: " & Erl & "!"
End If

Messagebox ErrMSG$, 64, "Lotus Notes..."
Err = 0
Exit Function
End Function


Function GetMaildb() As NotesDatabase

userMAIL = Evaluate(|@MailDbName|)

Set GetMaildb = ConnectMaildb(userMAIL(0), userMAIL(1))

End Function