A
Akupaka
Всем привет!
Есть вопрос по FTSearchRange, может кто юзал и с опытом ткнет меня носом туда, где я промахнулся?
Ниже представлен код, который выбирает не все документы.
Например, документов подходящих под условие поиска 27738, а код обрабатывает за первый запуск 15102, за второй - 12636.
Во втором случае, из 39344 за первый раз обработалось 24150 дока, а за второй - 15194.
Т.е. обрабатывается не все, при чем, каждый раз по-разному. Исходя из этого, я предполагаю, что проблема не в логике кода, но могу и ошибаться.
doArchiveCol() - фактически проходит по коллекции и удаляет документы из базы, и возвращает булевое значение (тру, если все хорошо).
заранее спасибо!
Есть вопрос по FTSearchRange, может кто юзал и с опытом ткнет меня носом туда, где я промахнулся?
Ниже представлен код, который выбирает не все документы.
Например, документов подходящих под условие поиска 27738, а код обрабатывает за первый запуск 15102, за второй - 12636.
Во втором случае, из 39344 за первый раз обработалось 24150 дока, а за второй - 15194.
Т.е. обрабатывается не все, при чем, каждый раз по-разному. Исходя из этого, я предполагаю, что проблема не в логике кода, но могу и ошибаться.
Код:
Public Function ArchiveByRule(ASearchRule As String, ARuleType As Integer) As Integer
Dim col As NotesDocumentCollection
Dim doc As NotesDocument
Dim sstart As Long
Dim scount As Long
Dim colcount As Long
ArchiveByRule = False
If Me.isInit() And checkArchiveAccess() And (ASearchRule <> "") Then
Select Case ARuleType
Case 1 ' @Formula search
Set col = mMainDb.Search(ASearchRule, Nothing, 0)
ArchiveByRule = doArchiveCol(col)
Case 2 ' FTSearch
ArchiveByRule = True
scount = 1000
sstart = 1
Set col = mMainDb.FTSearchRange(ASearchRule, scount, FT_SCORES, , sstart)
colcount = col.Count
While colcount > 0
ArchiveByRule = ArchiveByRule And doArchiveCol(col)
sstart = sstart + scount
If colcount < scount Then
colcount = 0
Else
Set col = mMainDb.FTSearchRange(ASearchRule, scount, FT_SCORES, , sstart)
colcount = col.Count
End If
Wend
End Select
End If
End Function
doArchiveCol() - фактически проходит по коллекции и удаляет документы из базы, и возвращает булевое значение (тру, если все хорошо).
заранее спасибо!