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

  • Автор темы DNT
  • Дата начала
D

DNT

Подскажите как быстро узнать скольно документов есть в базе по определённой форме?
Это нужно для организации счетчика.
Заранее спасибо.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Создать представление, с отбором по определенной форме. Дальше вызываем NotesView.EntryCount.
 
D

DNT

<!--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-ке?
 
N

nor

Для: DNT

1.
Код:
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.
Код:
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, синтаксис отбора документов которого аналогичен синтаксису отбора документов в представлении.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Кстати, скажи зачем ты используешь 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]
 
D

Domino6

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

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

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

nor

Для: Medevic

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--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 ?
 
N

nor

Для: Medevic

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: nor
Спасибо за разъяснение.
Странно, что в хелпе (и в примерах тоже) ни слова об этом.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!