Как проверить, существет ли база?

Тема в разделе "Lotus - Программирование", создана пользователем Shandrik, 15 мар 2016.

  1. Shandrik

    Shandrik Well-Known Member

    Регистрация:
    30 дек 2010
    Сообщения:
    236
    Симпатии:
    24
    Коллеги, как можно проверить, имеется ли по указанному пути на указанном сервере?

    Как отличить отсутствие базы от отсутствия доступа к ней, получив ndb.isOpen=false после
    set ndb=new NotesDataBase(server,FilePath)?

    Или можно по другому как-то определить?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    @Shandrik, а если через session.GetDatabase(server,FilePath, false)?
    Вроде Nothing если файла нет
    [DOUBLEPOST=1458045370,1458045179][/DOUBLEPOST]Можно попробовать еще от полученного объекта базы взять db.Title, для этого не надо "открывать" объект.
     
  3. Shandrik

    Shandrik Well-Known Member

    Регистрация:
    30 дек 2010
    Сообщения:
    236
    Симпатии:
    24
    Можно ли быть уверенным, что если доступа нет, то гарантировано получу ошибку 4060 User <UserName> cannot open database <server!!DBPath>?
     
  4. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    увидеть есть ли она в каталоге ;)
     
  5. Lariel

    Lariel Active Member

    Регистрация:
    11 сен 2009
    Сообщения:
    41
    Симпатии:
    4
    В LotusScript Используйте класс для работы с каталогом данных на сервере, вы получите информацию о наличие всех БД даже к которым нет доступа.
     
  6. garrick

    garrick Lotus team
    Lotus team

    Регистрация:
    26 окт 2009
    Сообщения:
    773
    Симпатии:
    52
    Если я ничего не путаю, то некоторые базы могут быть не зарегистрированы в каталоге.
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    а что мешает обработать ошибки?
     
  8. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    При таком подходе можно в логах сервера увидеть неприятные сообщения...

    Через DbDirectory неудобно, т.к. приходится перебирать базы в цикле с помощью getNextDatabase.

    Я бы попробовал поисследовать объект NotesDatabase при скармливании ему сервера и пути (на Title, как говорилось выше). Если нет, то, возможно, заюзал бы серверный агент.

    Задача не ясна; пути решения могут быть разные.
     
  9. Shandrik

    Shandrik Well-Known Member

    Регистрация:
    30 дек 2010
    Сообщения:
    236
    Симпатии:
    24
    Конечная задача такая - дать внешнему приложению возможность перед регистрацией юзера проверить, а нет ли уже в системе почтовой базы с таким путём\названием?
     
  10. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    @Shandrik, если такой файл уже есть регистрация пройдет без ошибок?
    Внешнее приложение создает NotesRegistration сразу или через документ в какой-то базе?
     
  11. Shandrik

    Shandrik Well-Known Member

    Регистрация:
    30 дек 2010
    Сообщения:
    236
    Симпатии:
    24
    Нет, внешнее приложение вызывает методы моего вебсервиса.
    В базе создаётся документ-тикет, куда пишется всякая служебная информация - прямая связь с учёткой в АК, задание агентам по данному юзеру, ошибки при регистрации, удалению, изменению.
     
  12. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    @Shandrik, хм,если конечная задача в том, чтобы был уникальный ПЯ для пользователя, то не надо давать эту проверку внешнему приложению.
    Если обработка тикета идет в лотусе, то надо просто на уровне лотуса проверить существование файла и если такой уже есть - видоизменить его.
    Добавить букву или две от имени ,сократить фамилию на пару символов, перевернуть и т.д.
    Тогда у нового пользователя будет ПЯ, даже если есть дубликат.
     
  13. Shandrik

    Shandrik Well-Known Member

    Регистрация:
    30 дек 2010
    Сообщения:
    236
    Симпатии:
    24
    За название mailfile-а берётся shortname, уникальность которого контролируется параметром NotesRegistration. ShortName - входной параметр вэбсервиса. Это прибито.
     
  14. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    @Shandrik,
    Видите, а мы думали, что надо с клиентской машины проверить. Всё-таки полезно начинать сразу с задачи.
    Веб-сервис для данной задачи идеален. Если агенто-вебсрвис подписан сервером или спецучёткой, то он имеет доступ ко всем базам, потому подключаетесь базе и всё. Если базы не будет, то не подключитесь) вроде ошибка будет генериться, не помню.
    Да, и надо сначала проверять наличие пользователя, а уже потом ПЯ. И результат возвращать, что "пользователь уже есть".
     
Загрузка...

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