使用公式和莲花脚本获取过去 25 分钟的文档



在 lotus 中,我有一个订单文档视图。我正在构建一个代理来搜索过去 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 小时前修改的订单。

这怎么可能?

我认为这可能是

因为您使用的是没有时间元素@today。试试@Now?

过去,我使用 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)

到目前为止,我对这种方法的经验非常好。有关获取修改文档的详细信息

为什么要使用公式?我会创建一个隐藏视图,第一列是上次修改的日期时间,降序排序。然后,我会编写我的 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.

最新更新