Db.open

wowa

Well-Known Member
01.02.2007
845
0
#1
Call db.Open(stDBServer,stDBFileName )
If db.IsOpen=True Then
...
...
...
End if

подскажите, пожалуйста следующее
1) Когда я Открываю свою БД и др. БД , к которым мне разрешен доступ, то все работает нормально
2) Когда я открываю БД, которая находится на другом локальном компе, то все работает нормально, оно просто не заходит в if
3) Но когда я пытаюсь открыть БД, к которой я не имею права доступа, то на строке Call db1.Open(stDBServer,stDBFileName ) выскакивает ошибка, типа "у меня нет прав..". И прерывается выполнение кода... Подскажите, как можно выкрутится с этой ситуации, чтобы оно отработало от начала до конца
 

wowa

Well-Known Member
01.02.2007
845
0
#3
КАк? Открыть я БД не могу, как можно узнать какой level = db1.CurrentAccessLevel ??
 

wowa

Well-Known Member
01.02.2007
845
0
#5
<!--QuoteBegin-Medevic+13:04:2007, 14:36 -->
<span class="vbquote">(Medevic @ 13:04:2007, 14:36 )</span><!--QuoteEBegin-->Добавь обработчик ошибок.
[snapback]62365" rel="nofollow" target="_blank[/snapback]​
[/quote]
Я новенький в этих делах, поэтому еще не знаю что это такое :)
 

Kee_Keekkenen

Well-Known Member
05.09.2006
639
6
Москва
#7
Код:
function aaa
dim переменные

try:
on error goto catch

код 

exit function
catch:
msgbox cstr(err) + " " + error + " " + cstr(erl)
exit function
end function
 

wowa

Well-Known Member
01.02.2007
845
0
#8
Для: Kee_Keekkenen
Большое Спасибо, а то я не разобрался бы с on error !!
 

AvasKvas

Well-Known Member
03.06.2009
78
0
32
#9
У меня вопрос похоржий, но проблемка немного иначе!
Я в промт вывожу список всех баз на сервере! Но так как не ко все базам имею доступ, то хочу сделать фильтр,который "недоступные" базы бы отсекал! Вообщем,все это делается в цикле! Проверяю CurrentAccessLevel! Ловлю ошибку!
Первая ошибка ловится нормально, а вот на другой базе, уже не ловится и выполнение останавливается!
Как можно ловить ошибки во время выполнения всего цикла!


Вот часть кода, где ошибка вылезает:

On Error Goto errorHandler
While Not (db Is Nothing) 'названия
Call db.Open(server, db.FileName)
inte = db.CurrentAccessLevel
If inte > 1 Then
Redim Preserve x(i)
x(i) = db.Title
i = i+1
End If
errorHandler:
Set db = DbD.GetNextDatabase
Wend
ch = workspace.Prompt(PROMPT_OKCANCELLIST,"Доступные базы данных","Выберите базу данных,в которую необходимо поместить документ!","",x )
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#11
Код:
On Error Goto errorHandler

Set db = DbD.GetFirstDatabase
While Not (db Is Nothing) 'названия
inte = 0

On Error Resume Next
Call db.Open(server, db.FileName)
inte = db.CurrentAccessLevel
On Error Goto errorHandler

If inte > 1 Then
Redim Preserve x(i)
x(i) = db.Title
i = i+1
End If

Set db = DbD.GetNextDatabase

errorHandler:
'тра-ля-ля
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#12
Попробуй использовать QueryAccess
а этот метод не требует открытой БД?..

AvasKvas , во-первых, для кода на форуме следует истпользовать оформление, а во вторых...
у тебя код вываливается по ошибке или как происходит выполнение при возникновении ошибки?..

попробуй несколько иначе обрабатывать открытие БД

Код:
	on error resume next
While Not (db Is Nothing) 'названия
Call db.Open(server, db.FileName)
if db.IsOpen() then
inte = db.CurrentAccessLevel
If inte > 1 Then
Redim Preserve x(i)
x(i) = db.Title
i = i+1
End If
end if
Set db = DbD.GetNextDatabase
Wend
on error goto 0 ' ну или другой обработчик

ch = workspace.Prompt(PROMPT_OKCANCELLIST,"Доступные базы данных","Выберите базу данных,в которую необходимо поместить документ!","",x )
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#17
Цитата(Akupaka @ 4:06:2009, 15:28 )
а этот метод не требует открытой БД?..

Вроде бы нет. В отличие от CurrentAccessLevel.
Medevic, "вроде" не катит...
дошли руки QueryAccess проверить.
На 7-ке работает, как описано в хелпе - требует открытия db (если она получена из NotesDbDirectory).
Может, у вас "умная и продвинутая" 8-ка? ;)