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

Shandrik

Lotus team
30.12.2010
268
12
#1
Коллеги, как можно проверить, имеется ли по указанному пути на указанном сервере?

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

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

savl

Lotus team
28.10.2011
2 136
105
#2
@Shandrik, а если через session.GetDatabase(server,FilePath, false)?
Вроде Nothing если файла нет
[DOUBLEPOST=1458045370,1458045179][/DOUBLEPOST]Можно попробовать еще от полученного объекта базы взять db.Title, для этого не надо "открывать" объект.
 

Shandrik

Lotus team
30.12.2010
268
12
#3
Можно ли быть уверенным, что если доступа нет, то гарантировано получу ошибку 4060 User <UserName> cannot open database <server!!DBPath>?
 

Lariel

Active member
11.09.2009
41
2
#5
В LotusScript Используйте класс для работы с каталогом данных на сервере, вы получите информацию о наличие всех БД даже к которым нет доступа.
 

garrick

Lotus team
26.10.2009
901
61
#6
В LotusScript Используйте класс для работы с каталогом данных на сервере, вы получите информацию о наличие всех БД даже к которым нет доступа.
Если я ничего не путаю, то некоторые базы могут быть не зарегистрированы в каталоге.
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#8
Можно ли быть уверенным, что если доступа нет, то гарантировано получу ошибку 4060 User <UserName> cannot open database <server!!DBPath>?
При таком подходе можно в логах сервера увидеть неприятные сообщения...

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

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

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

Shandrik

Lotus team
30.12.2010
268
12
#9
Конечная задача такая - дать внешнему приложению возможность перед регистрацией юзера проверить, а нет ли уже в системе почтовой базы с таким путём\названием?
 

savl

Lotus team
28.10.2011
2 136
105
#10
@Shandrik, если такой файл уже есть регистрация пройдет без ошибок?
Внешнее приложение создает NotesRegistration сразу или через документ в какой-то базе?
 

Shandrik

Lotus team
30.12.2010
268
12
#11
Нет, внешнее приложение вызывает методы моего вебсервиса.
В базе создаётся документ-тикет, куда пишется всякая служебная информация - прямая связь с учёткой в АК, задание агентам по данному юзеру, ошибки при регистрации, удалению, изменению.
 

savl

Lotus team
28.10.2011
2 136
105
#12
@Shandrik, хм,если конечная задача в том, чтобы был уникальный ПЯ для пользователя, то не надо давать эту проверку внешнему приложению.
Если обработка тикета идет в лотусе, то надо просто на уровне лотуса проверить существование файла и если такой уже есть - видоизменить его.
Добавить букву или две от имени ,сократить фамилию на пару символов, перевернуть и т.д.
Тогда у нового пользователя будет ПЯ, даже если есть дубликат.
 

Shandrik

Lotus team
30.12.2010
268
12
#13
За название mailfile-а берётся shortname, уникальность которого контролируется параметром NotesRegistration. ShortName - входной параметр вэбсервиса. Это прибито.
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#14
@Shandrik,
Видите, а мы думали, что надо с клиентской машины проверить. Всё-таки полезно начинать сразу с задачи.
Веб-сервис для данной задачи идеален. Если агенто-вебсрвис подписан сервером или спецучёткой, то он имеет доступ ко всем базам, потому подключаетесь базе и всё. Если базы не будет, то не подключитесь) вроде ошибка будет генериться, не помню.
Да, и надо сначала проверять наличие пользователя, а уже потом ПЯ. И результат возвращать, что "пользователь уже есть".