Db и Workspace

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

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Получаю скриптом любую базу данных из директории.
    Как определить, есть ли она у меня на Workspace?

    Главная задача: удалить старые реплики, которых нет на WorkSpace.
     
  2. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    И еще один вопрос. Мы имеем репликатор, где содержиться список реплик, реплицируются базы и т.д.... Как к ниму получить доступ и в частности получить список этих баз(реплик)?
     
  3. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Получение Реплик БД делал так.. хотя возможно есть стандартные решения
    Из АК получаем список всех БД
    Код (Text):
    Set db = ss.GetDatabase(CurrentServer,"names.nsf")
    Set ServerCol=db.Search({form="Server"},Nothing,0)
    с помощью метода OpenByReplicaID пробуем открыть БД на полученных серверах. Проверяем объект NotesDatabase is nothing.. и дальше делаем все что угодно(список серверов с репликами, изменение в бд реплики и т.д.)
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    nayke
    Не проще ли и быстрее взять из "names.nsf" представление "($Servers)", чем лопатить всю базу?
     
  5. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Вполне возможно.. это на уровне идеи..
     
  6. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    nayke , пару вопросов:

    CurrentServer - Что это за сервер? мой локальный?

    Открыл локальную базу, и не вижу вью "($Servers)", вижу: "($ServerAccess)" и "($ServerGroups)"
     
  7. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Да, сервер с вашей адрессной книгой. Если из в БД делаете можно пользовать Workspace.CurrentDatabase.Database.Server
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Имеется ввиду серверная АК. В локальной и Set ServerCol=db.Search({form="Server"},Nothing,0) ничего не даст, ну нету там серверных документов.
     
  9. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Не, все-таки мне это скорее всего не поможет. Попробую описать главную (серьезную проблему).

    Есть база данных. Пользователь делает реплику, пользуется ею долгое время. Далее он ее удаляет неправильно, тупо на Workspace кликает delete на клаве и всё. Реплика, как вы понимаете, не была удалена и она не реплицируется.
    Далее, база на сервере была перенесена в другое место либо не перенесена, я думаю не важно. И тут через несколько месяцев пользователь решает создать новую реплику. При создании лотус находит старую реплику и предлагает старый путь на компе. Пользователю обычно все равно где его реплика находится и нажимает ОК.
    Тут главная ошибка, старая реплика начинает реплицироваться и получается очень много конфликтов, лишних документов и т.д....

    Дак вот ищу как удалить на стороне пользователя эти старые реплики.

    Более идеальный вариант - это найти список локальных баз по реплики и определить, есть ли значок этой базы на Workspace. Последний пункт я не знаю как реализовать. Думаю инфа храниться где-то в Bookmarks
     
  10. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    вы сами себе придумали геморой вот с этого места база на сервере была перенесена в другое место
    Потому как если вы перенесли базу, то сделайте её КОПИЮ а не реплику, тогда всё будет тип-топ

    другой вариант - запрет на создание реплики
     
  11. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    есть метод - взять БД по репликИД
    notesDatabase.OpenByReplicaID( server$, replicaID$ )
     
  12. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Насколько я помню, информация хранится в Desktop#.ndk. И, если не подводит мой склероз, поместить ярлык базы в рабочую область есть штатные методы, а вот докопаться до имеющихся ярлыков прямых путей нет.
     
  13. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Дак особо разницы нет, перенесена база или нет. Пользователь удалил реплику, через месяц создал новую, а на самом деле открыл старую реплику

    Нельзя. Пользуется весь мир, не у всех хорошая связь, да и база огромная, пару гигов.

    Пока я этим и пользуюсь. Загвоздка в том, вдруг это нормальная реплика, которая постоянно реплицируется и т.д... А мне надо найти старую, давно реплицирующуюся и удалить ее... Возможно есть какое-то свойство реплики, где указано как давно проходила репликация.
     
  14. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  15. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    nvy , вот это дааааа....спасибо..
     
Загрузка...
Похожие Темы - Workspace
  1. Cleric-Lviv
    Ответов:
    3
    Просмотров:
    669
  2. k85
    Ответов:
    1
    Просмотров:
    1.232
  3. Cleric-Lviv
    Ответов:
    2
    Просмотров:
    1.685
  4. sanch
    Ответов:
    9
    Просмотров:
    3.412
  5. yerke
    Ответов:
    4
    Просмотров:
    3.147

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