搜索给定范围之间的日期 - Lotus

时间:2010-03-19 18:07:16

标签: date lotus-notes lotusscript

我一直在努力找出搜索收集具有特定日期的数据库中所有文档的最佳方法。

最初我尝试使用FTsearch或搜索来浏览文档集合,但我转而处理视图和相关文档。

我的第一个问题是什么是最简单的方法来浏览一组文档并查找文档中存储的日期是否大于或小于指定的日期?

因此,为了继续工作,我实现了以下代码。

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

您可以看到doc中存储的日期不在P1和P2之间。但!它确实限制了日期小于P1的文档。所以我不会得到一个日期小于3/1/10

的文件的结果

如果没有比if语句更好的方法,有人可以帮助我理解为什么包含上面两个例子吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

卡洛斯的回应非常好。

如果你有很多文件,你也可以使用全文搜索,这会更快。方法调用非常相似(db.ftsearch(),可以找到联机帮助here)。

标准数据库搜索方法的运行方式与查看索引更新的方式相同,因此如果要搜索数千个文档,它可能会变慢。

只需确保在数据库属性中启用数据库的全文索引(最后一个选项卡)。

这种方法的语法非常相似,this链接为FTsearch提供了很好的参考。使用Carlos的语法,您可以替换FTSearch和searchStr分配以加快搜索速度。