Очистка базы

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

Статус темы:
Закрыта.
  1. Idea

    Idea Гость

    Доброго времени суток всем! Что-то на меня нашел ступор. Нужно очистить базу данных - удалить все-все-все документы. Я - менеджер базы. Написала кнопочку:
    Код (Text):
    Sub Click(Source As Button)

    Dim ws As New NotesUIWorkspace
    Dim sh As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim piu As String
    Dim ppiu As Variant
    Dim tmpdoc As NotesDocument
    Dim tmpcol As NotesDocumentCollection
    Dim selection As String

    selection = "@All"

    Set db = sh.CurrentDatabase

    Set tmpcol = db.Search(selection, Nothing, 0)

    Set tmpdoc = tmpcol.GetFirstDocument
    Do Until tmpdoc Is Nothing
    Set doc = tmpdoc
    Set tmpdoc = tmpcol.GetFirstDocument
    doc.Remove(True)
    ws.ViewRefresh
    Loop

    End Sub
    Говорит, что коллекция пустая.
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Idea
    1. @All - не работает в сёрче

    Use @All in selection formulas, mail agents, paste agents, scheduled agents, or in any formula requiring a SELECT statement. Lotus Notes/Domino appends SELECT @All to agents in contexts where @All is needed. All views default to a selection formula of SELECT @All

    2. Зделайте на кнопе запуск собачного агента. у него в свойстах віберите ВСЕ документы и на собаках удлаить документ )))

    3. Зделайте на кнопе запуск собачного агента. у него в свойстах віберите ВСЕ документы ( @All) и через UnprocessedDocuments пройтись повсем документам и удалить их в скриптах
     
  3. Sandr

    Sandr Гость

    если использовать то, что написали Вы, то нужно немного поправить...

    Код (Text):
    Set tmpdoc = tmpcol.GetFirstDocument
    while not tmpdoc is Nothing
    Set doc = tmpdoc
    Set tmpdoc = tmpcol.GetNextDocument(tmpdoc)
    doc.Remove(True)
    Wend

    А вообще пишите в агенте такое

    @DeleteDocument
    SELECT @All


    turget агенту указываете все документы в базе...

    /MODERARTOR/ А ну ка пользуемся тегами кода, а то по сопатке :)
     
  4. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    а можно и без программирования. См. Replication Settings..
     
  5. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Constantin A Chervonenko
    Злой админский способ :)
     
  6. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    а если реплика не важна, то и вовсе New Copy...

    а если хотим LotusScript юзать, то

    Set notesDocumentCollection = notesDatabase.AllDocuments
    Call notesDocumentCollection.RemoveAll( force )
     
  7. Idea

    Idea Гость

    Да, действительно, совсем забыла про Таргеты агентов. На собаках - то, что надо. Всем спасибо, всем по плюсу)
     
  8. Idea

    Idea Гость

    Нашелся косячок - кнопка удаляет только те документы, в которые я могу читать, а те, что висели у других пользователей, похоже так и висят. может вся фишка в том, что я не фул админ?
     
  9. Sandr

    Sandr Гость

    Вы же агент от своего имени запускаете? Запускайте его на сервере...
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    запускать нужно от имени пользователя, что имеет доступ чтение всех документов и на удаление...
    не обязательно на сервере... тем более, сервер не обязательно видит все доки...
    если Вы именно таким запускаете, то проверьте какие докты отбираются агентом, возможно только выбранные... а не все в БД...
     
  11. Idea

    Idea Гость

    эм... а это пользователь типа по умолчанию должен прописываться в поля читателей? или достаточно быть менеджером базы?
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    учим Авторс, Ридерс поля :(

    поля типа Ридерс ограничивают доступ на чтение к документу независимо от уровня доступа в ТУД (АЦЛ), короче говоря, если в док-те есть Ридерс-поле, а в нем не перечислен пользователь, то он не увидит док, даже если будет Менеджером...

    всегда нужно создавать роли, и их содержащие поля типа автор, для получения доступа к доку в критической ситуации... имхо ;)

    ЗЫ: а вот поля типа Авторс, ограничивают доступ на редактирование лишь до уровня ТУД - Автор, т.е. Редактор (Эдитор) будет иметь доступ на редактирование, если будет перечислен хотя бы в Ридерс-поле...

    зы2: надеюсь, что я не ошибся ни в чем :)
     
  13. D!m@n

    D!m@n Гость

    Включите в клиенте Domino Administrator режим Full Access Administrator и запустите своего агента.
    Тогда гарантированно удалите все доки.
     
  14. Sandr

    Sandr Гость

    Угу, тока для этого надо иметь право редактировать Server document... :(
     
  15. D!m@n

    D!m@n Гость

    Ну хорошо, значит если не получится, зайти на сервере локально с клиента в names.nsf, отредактировать документ Server, потом вернуться на свое рабочее место и включить режим Full Access...
     
  16. Sandr

    Sandr Гость

    Далеко не всегда разработчикам дается такая возможность... И чем лучше поставлена безопасность в компании, тем меньше шансов того, что разработчик может достучаться до административной части сервера... :(
     
  17. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-Sandr+20:12:2007, 22:36 -->
    <span class="vbquote">(Sandr @ 20:12:2007, 22:36 )</span><!--QuoteEBegin-->достучаться до административной части сервера
    [snapback]90800" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    и тем собственно лучше всего будет ... изменения под FA делать надо осоторожно...
     
  18. Sandr

    Sandr Гость

    Создайте реплику или копию базы и не мучайтесь, а старую грохните... дело миннуты...

    Кстати, а я вот не понял, в чем разница между зайти со своей машины и локально, где сервер? Или вы из консоля будет менять names.nsf ?
     
  19. D!m@n

    D!m@n Гость

    Да почему, можно и со своей машины с серверным id-шником...

    Хотя на месте автора темы я попробовал бы для начала дать себе помимо менеджерского доступа все роли в базе :( Если она была сдизайнена не криво, то скорее всего фулл-аксесс после этого и не понадобится...
     
  20. Idea

    Idea Гость

    Хехе) Всё вы правильно пишете) И роли пробовала, а вот с ридерсами накосячила, умнее буду) База я думаю сдизайнена достаточно криво, ибо опять в авральном порядке ("утром деньги, вечером стулья").
    А фулл-аксесс мне действительно не положен (хоть в чем-то по уму сделали) ;)
    В общем кое-как удалили всё лишнее, попробуем теперь по уму сделать. Спасибо за советы
     
Загрузка...
Статус темы:
Закрыта.

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