Как вы считаете документы?

Тема в разделе "Lotus - Программирование", создана пользователем DNT, 16 янв 2006.

  1. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Подскажите как быстро узнать скольно документов есть в базе по определённой форме?
    Это нужно для организации счетчика.
    Заранее спасибо.
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Создать представление, с отбором по определенной форме. Дальше вызываем NotesView.EntryCount.
     
  3. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    <!--QuoteBegin-Medevic+16:01:2006, 17:33 -->
    <span class="vbquote">(Medevic @ 16:01:2006, 17:33 )</span><!--QuoteEBegin-->Создать представление, с отбором по определенной форме. Дальше вызываем NotesView.EntryCount.
    [snapback]29373" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Not a member:ENTRYCOUNT
    Не работает. Может это для 6-ки? А как быть в 5-ке?
     
  4. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Да... Не много вариантов... B)
     
  5. nor

    nor Гость

    Для: DNT

    1.
    Код (Text):
    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim view_name As String

    Set session = New NotesSession
    Set db = session.CurrentDatabase
    view_name = "acl_modification"
    Set view = db.GetView(view_name)
    Call view.Refresh
    Print "Total number of documents in view " + view_name + " is "+ Cstr(view.EntryCount) + "."

    2.
    Код (Text):
    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim doc_collection As NotesDocumentCollection
    Dim form_name As String
    Dim timeout As Long

    Set session = New NotesSession
    Set db = session.CurrentDatabase
    Call db.UpdateFTIndex(True)
    form_name = "dbacl_manager"
    timeout = 5
    Sleep timeout
    Set doc_collection = db.FTSearch(|FIELD Form CONTAINS | + form_name, 0)
    Print "Total number of documents by form " + form_name + " is "+ Cstr(doc_collection.Count) + "."
    Метод FTSearch по умолчанию возвращает максимум до 5000 документов. Если требуется большее число то в Notes.ini документе необходимо изменить значение переменной FT_MAX_SEARCH_RESULTS.
    Синтаксис отбора документа для метода FTSearch можно посмотреть в справке: Refining a search query using operators, FTSearch method.

    Также можно пользоваться методом Search, синтаксис отбора документов которого аналогичен синтаксису отбора документов в представлении.
     
  6. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Кстати, скажи зачем ты используешь Sleep ?
    <!--QuoteBegin-nor+17:01:2006, 13:09 -->
    <span class="vbquote">(nor @ 17:01:2006, 13:09 )</span><!--QuoteEBegin-->Sleep timeout
    [snapback]29411" rel="nofollow" target="_blank[/snapback]​
    [/quote]
     
  7. Domino6

    Domino6 Гость

    Сделать вид
    1-я колонка -категоризировать по полю Form
    2- название
    3- суммарная значение 1 без высветки

    LotusScript:
    Далее getentrybykey в полученом масиве 0-е значение имя формы 1-е количество

    @formula
    @Subset(@dblookup("":"NoCache";"":"";"Имя вмда";"Имя формы";2);1)
     
  8. nor

    nor Гость

    Для: Medevic

    Чтобы подождать пока обновится индекс бд. Для небольших бд обновление происходит мгновенно.
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-nor+18:01:2006, 12:32 -->
    <span class="vbquote">(nor @ 18:01:2006, 12:32 )</span><!--QuoteEBegin-->Чтобы подождать пока обновится индекс бд. Для небольших бд обновление происходит мгновенно.
    [snapback]29467" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Т.е. лотус не ждет завершения выполнения команды Call db.UpdateFTIndex ?
     
  10. nor

    nor Гость

    Для: Medevic

    Нет, конечно. Команда обновления индекса бд ставится в очередь на сервере Domino и в зависимости от загрузки сервера и размера бд индекс будет обновлятся с определенным значением timeout.
    В принципе для небольших бд нужно пользоваться методом notesDatabase.Search, но я привел пример на все случаи жизни с FTSearch, который используется в крупных production application.
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: nor
    Спасибо за разъяснение.
    Странно, что в хелпе (и в примерах тоже) ни слова об этом.
     
Загрузка...

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