使用公式和 lotusscript 获取最后 25 分钟的文档
Getting documents of last 25 minutes with formula and lotusscript
在 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)
到目前为止,我对这种方法的体验非常好。有关 GetModifiedDocuments
的更多信息
为什么要使用公式?
我会创建一个隐藏视图,第一列是最后修改的 date-time,降序排列。
然后我会编写我的 Lotusscript 代码,从顶部开始,一直向下工作,直到它遇到一个早于 25 分钟前的 date/time 值。
像这样:
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.
在 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)
到目前为止,我对这种方法的体验非常好。有关 GetModifiedDocuments
的更多信息为什么要使用公式? 我会创建一个隐藏视图,第一列是最后修改的 date-time,降序排列。 然后我会编写我的 Lotusscript 代码,从顶部开始,一直向下工作,直到它遇到一个早于 25 分钟前的 date/time 值。
像这样:
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.