Db.open

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 13 апр 2007.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Call db.Open(stDBServer,stDBFileName )
    If db.IsOpen=True Then
    ...
    ...
    ...
    End if

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Проверить CurrentAccessLevel.
     
  3. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    КАк? Открыть я БД не могу, как можно узнать какой level = db1.CurrentAccessLevel ??
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: wowa
    Ага. :)
    Добавь обработчик ошибок.
     
  5. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    <!--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]
    Я новенький в этих делах, поэтому еще не знаю что это такое :)
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Поищи в хелпе "On Error".
     
  7. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    Код (Text):
    function aaa
    dim переменные

    try:
    on error goto catch

    код

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

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Для: Kee_Keekkenen
    Большое Спасибо, а то я не разобрался бы с on error !!
     
  9. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    У меня вопрос похоржий, но проблемка немного иначе!
    Я в промт вывожу список всех баз на сервере! Но так как не ко все базам имею доступ, то хочу сделать фильтр,который "недоступные" базы бы отсекал! Вообщем,все это делается в цикле! Проверяю 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 )
     
  10. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Попробуй использовать QueryAccess.
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Код (Text):
    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:
    'тра-ля-ля
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а этот метод не требует открытой БД?..

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

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

    Код (Text):
        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 )
     
  13. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Omh
    Огромное спасибо!Работает!Что то я не дотумкал!
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вроде бы нет. В отличие от CurrentAccessLevel.
     
  15. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    AvasKvas
    Просто код надо аккуратней писать.
    И усё.
     
  16. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Omh, интересно... ты сам покраснел, когда писал? ;)
     
  17. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Medevic, "вроде" не катит...
    дошли руки QueryAccess проверить.
    На 7-ке работает, как описано в хелпе - требует открытия db (если она получена из NotesDbDirectory).
    Может, у вас "умная и продвинутая" 8-ка? ;)
     
  18. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    OKEN
    Действительно так. :)
     
Загрузка...

Поделиться этой страницей