使用公式和lotusscript获取最近25分钟的文档

时间:2017-01-27 10:03:59

标签: formula lotus-notes lotus-domino lotusscript

在莲花中我有订单文件的视图。 我正在建立一个代理商来搜索过去25分钟内修改过的所有订单。

为此,我完成了以下代码:

strFormule = "Form=""Order"" & @Modified >=  @Adjust(@Today;0;0;0;0;-25;0) & Deleted !=""J"""

Set ndcOrder = currentDB.Search( strFormule, Nothing, 0 )
If ndcOrder.Count <> 0 Then
Set doc = ndcOrder.GetFirstDocument
While Not doc Is Nothing

因此,如果它是11.00那么它需要接受今天修改的订单,从10.35

但是在调试器中我也得到了2小时前修改过的订单。

这怎么可能?

3 个答案:

答案 0 :(得分:6)

我认为这可能是因为你正在使用没有时间元素的@today。试试@Now吧?

答案 1 :(得分:3)

过去,我使用了LotusScript方法GetModifiedDocuments,它允许您指定NotesDateTime对象以检索自之后修改的任何文档。 您的代码可能如下所示:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As notesdocumentcollection
Dim since As New NotesDateTime("")

Set db = session.CurrentDatabase
Call since.SetNow()
Call since.AdjustMinute(-25)
Set dc = db.GetModifiedDocuments(since)

到目前为止,我对这种方法的经验非常好。有关GetModifiedDocuments

的更多信息

答案 2 :(得分:0)

为什么要使用配方? 我会创建一个隐藏视图,第一列是最后修改日期时间,按降序排序。 然后我会编写我的Lotusscript代码从顶部开始向下工作,直到它遇到超过25分钟前的日期/时间值。

这样的事情:

Dim docs List As NotesDocument
Set dt25 = New NotesDateEntry(Now())
Call dt25.AdjustMinutes(-25)
Dim col as NotesViewEntryCollection
Dim entry as NotesViewEntry
Set col = view.AllEntries
Set entry = col.GetFirstEntry
Do Until entry Is Nothing
    If Cdat(entry.ColumnValues(0))<Cdat(dt25.LSLocalTime) Then
        Exit Loop
    End If
    Set docs(entry.Document.UniversalID) = entry.Document
Loop
' Now you have a list of documents created in the last 25 minutes.