2010-03-19 98 views
1

我一直在努力研究搜索收集某個日期的數據庫中的所有文檔的最佳方法。搜索給定範圍之間的日期 - Lotus

最初我試圖使用FT搜索或搜索來移動文檔集合,但我更改爲處理視圖和相關文檔。

我的第一個問題是旋轉一組文檔並查找存儲在文檔中的日期是否大於或小於指定日期的最簡單方法是什麼?

因此,爲了繼續工作,我實現了下面的代碼。

If (doc.creationDate(0) > cdat(parm1)) 
    And (doc.creationDate(0) < CDat(parm2)) then 
    ... 
end if 

但結果是關閉

Included! Date:3/12/10 11:07:08 P1:3/1/10 P2: 3/5/10 
Included! Date:3/13/10 9:15:09 P1:3/1/10 P2: 3/5/10 
Included! Date:3/17/10 16:22:07P1:3/1/10 P2: 3/5/10 

你可以看到存儲在文檔的日期不P1和P2之間。但!它確實限制了日期小於P1的文檔。所以我不會得到一個日期少於3/1/10的文檔的結果

如果沒有比if語句更好的方法,有人可以幫我理解爲什麼上面的兩個例子是包括在內呢?

回答

5

你好你可以嘗試這樣的事:

searchStr = {(Form = "yourForm" & ((@Created > [} & parm1 & {]) & (@Created < [} & parm2 & {])))} 

Set docCollection = currentDB.Search(searchStr, Nothing, 0) 

If(docCollection.Count > 0)Then 
    'do your stuff with the collection returned 
End If 
+0

我試過搜索和FT搜索,但我錯過的部分是[]周圍的日期。 謝謝! – 2010-03-24 12:56:42

2

卡洛斯的反應是相當不錯的。

如果你有很多文件,你也可以使用全文搜索,速度會更快。該方法調用非常相似(db.ftsearch(),在線幫助可以找到here)。

標準數據庫搜索方法的操作方式與查看索引更新的方式相同,因此如果您有數千個文檔要搜索,它可能會變慢一點。

只要確保在數據庫屬性(最後一個選項卡)中爲數據庫啓用了全文索引即可。

該方法的語法非常相似,this鏈接爲FTsearch提供了很好的參考。使用Carlos的語法,您可以替代FTSearch和searchStr分配以加快搜索速度。

+0

鏈接是守護者。 +1供參考。 – 2010-03-25 12:24:16