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

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

  1. Shandrik

    Shandrik Well-Known Member
    Lotus team

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

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

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

    savl Well-Known Member
    Команда форума Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.104
    Симпатии:
    155
    @Shandrik, а если через session.GetDatabase(server,FilePath, false)?
    Вроде Nothing если файла нет
    --- Добавлено 15 мар 2016. Первое сообщение размещено 15 мар 2016 ---
    Можно попробовать еще от полученного объекта базы взять db.Title, для этого не надо "открывать" объект.
     
  3. Shandrik

    Shandrik Well-Known Member
    Lotus team

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

    ToxaRat Чёрный маг
    Команда форума Lotus team

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

    Lariel Active Member

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

    garrick Well-Known Member
    Lotus team

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

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

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

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

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

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

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

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

    Shandrik Well-Known Member
    Lotus team

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

    savl Well-Known Member
    Команда форума Lotus team

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

    Shandrik Well-Known Member
    Lotus team

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

    savl Well-Known Member
    Команда форума Lotus team

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

    Shandrik Well-Known Member
    Lotus team

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

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

    Репутация:
    0
    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    @Shandrik,
    Видите, а мы думали, что надо с клиентской машины проверить. Всё-таки полезно начинать сразу с задачи.
    Веб-сервис для данной задачи идеален. Если агенто-вебсрвис подписан сервером или спецучёткой, то он имеет доступ ко всем базам, потому подключаетесь базе и всё. Если базы не будет, то не подключитесь) вроде ошибка будет генериться, не помню.
    Да, и надо сначала проверять наличие пользователя, а уже потом ПЯ. И результат возвращать, что "пользователь уже есть".
     
Загрузка...
Похожие Темы - Как проверить существет
  1. run4w4y
    Ответов:
    6
    Просмотров:
    249
  2. rownong
    Ответов:
    0
    Просмотров:
    681
  3. diga
    Ответов:
    25
    Просмотров:
    4.256
  4. Истребитель
    Ответов:
    22
    Просмотров:
    16.558
  5. dimat
    Ответов:
    12
    Просмотров:
    4.234

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