【问题标题】:Search for a date between given ranges - Lotus搜索给定范围之间的日期 - Lotus
【发布时间】:2010-03-19 18:07:16
【问题描述】:

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

最初我尝试使用 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

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

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

【问题讨论】:

    标签: date lotus-notes lotusscript


    【解决方案1】:

    你好,你可以试试这样的:

    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
    

    【讨论】:

    • 我尝试了搜索和 FTsearch,但我缺少的部分是日期周围的 []。谢谢!
    【解决方案2】:

    Carlos 的反应非常好。

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

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

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

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

    【讨论】:

    • 链接是一个守门员。 +1 供参考。
    猜你喜欢
    • 2017-12-20
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    相关资源
    最近更新 更多