1

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

最初我试图使用 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 语句更好的方法,有人可以帮助我理解为什么包含上面的两个示例吗?

4

2 回答 2

6

嗨,你可以尝试这样的事情:

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
于 2010-03-19T19:37:02.303 回答
2

卡洛斯的反应非常好。

如果您有很多文档,您还可以使用全文搜索,这样会更快。方法调用非常相似(db.ftsearch(),在线帮助可以在这里找到)。

标准的 DB 搜索方法与视图索引更新的操作方式相同,因此如果您要搜索数千个文档,它可能会有点慢。

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

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

于 2010-03-24T23:25:18.617 回答