Ftsearch

  • Автор темы dread
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

dread

#1
Здравствуйте.
Ломаю голову, наверное не хватает опыта
и так
есть некая бд в domino
в бд порядка 500000 документов.
У каждого документа есть поле PersonalWork оно типа date/time
или пустое
Мне необходимо агентом в ночи искать документы [PersonalWork] < date
делаю это так
Код:
Sub Initialize()
Dim s As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim cur_date As variant
Dim ptp_date As Variant
Dim docid As string
Set db = s.CurrentDatabase
cur_date = date
Set col = db.Ftsearch("[PersonalWork] < " + CStr(date),0)
Set doc = col.Getfirstdocument()
While Not(doc Is nothing)
ptp_date = CDat(doc.Getitemvalue("PersonalWork")(0))
docid = doc.UniversalID
Print "$ExportID: CurrentWeek",docid , FullTrim(CStr(doc.Getitemvalue("$ExportID")(0))),ptp_date
Set doc = col.Getnextdocument(doc)
Wend
End Sub
на выходе получаю ожидаемую картину:
Код:
24.08.2010 12:14:40  Agent Manager: Agent printing: $ExportID: CurrentWeek	 D275889248FF9466C32577370065A338		 1928051	  13.8.10 11:10:54
24.08.2010 12:14:40  Agent Manager: Agent printing: $ExportID: CurrentWeek	 02007A418A4F2A0CC325774B004796A3		 1801172	  22.8.10 8:29:03
24.08.2010 12:14:40  Agent Manager: Agent printing: $ExportID: CurrentWeek	 2781050D3BB0CFACC325774B0048D66E		 1815716	  18.8.10 11:56:57
24.08.2010 12:14:40  Agent Manager: Agent printing: $ExportID: CurrentWeek	 F858B9C62F8CD70FC325774B0048D1A6		 1794857	  19.8.10 17:04:52
24.08.2010 12:14:40  Agent Manager: Agent printing: $ExportID: CurrentWeek	 23059132701A0279C325774B00477F95		 1747355	  19.8.10 15:54:16
.........
но , если открыть документ, и посмотреть поле, получается что ptp_date явно больше сегодня.
например у D275889248FF9466C32577370065A338

Код:
Field Name: PersonalWork
Data Type: Time/Date
Data Length: 8 bytes
Seq Num: 101
Dup Item ID: 0
Field Flags: SUMMARY 

01.09.2010 00:00:00 ZE3
индексы пересоздавал, fixup делал, в чем дело не понятно
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Зато 09.01.2010 явно меньше сегодня. Проблема, наверное, в формате даты.
 

nvyush

Lotus team
22.04.2009
2 317
0
#3
Можно для данной задачи использовать служебное представление с формулой отбора вида
SELECT [PersonalWork] < @TextToTime("@Today")
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 584
271
#4
помимо отмеченного Medevic....
меня смущает использование FT ваще...
почему не GetAllEntriesByKey, по диапозону дат ?
приведение к тексту дат чревато многими граблями
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#5
К тому же FTSearch без настройки вернёт только 5000 документов.
 

alik86

Lotus team
20.11.2008
465
1
#7
Можете еще попробовать:
Set col = Db.Search( {@Date(PersonalWork) < @Today}, Nothing, 0)
 
Статус
Закрыто для дальнейших ответов.