2017-01-27 2 views
2

erhalten Im Lotus habe ich eine Ansicht mit Auftragsdokumenten. Ich baue einen Agenten, um nach allen Bestellungen zu suchen, die in den letzten 25 Minuten geändert wurden.Dokumente der letzten 25 Minuten mit Formel und Lotusskript

Dafür habe ich getan Code wie:

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 

Also, wenn es 11.00 Uhr dann müssen Aufträge anzunehmen, die heute geändert werden, von 10.35

Aber im Debugger ich auch Aufträge erhalten, die in der 2 Stunden früher modifiziert.

Wie ist das möglich?

Antwort

6

Ich denke, es könnte sein, weil Sie @ Today verwenden, die kein Zeitelement hat. Probieren Sie stattdessen @Now?

+1

Wenn ich also die Aufträge von den letzten Tag wollen dann heute verwende ich, und wenn ich von der letzten Stunde oder Minute möchte ich nutzen, dann ist jetzt richtig? – YdB

+0

Ja, das stimmt, oder Sie können @Date (@Modified) = @Yesterday (vergleicht nur den Datumsteil des Zeitstempels) für die gestrigen Änderungen verwenden. Wenn die Tageszeit eine Rolle spielt, verwenden Sie @ Modified = @ Adjust (@Now; 0; 0; 0; 0; -25; 0), wie Sie sagen. – user2808054

+1

@bboni Hinter dem Vorhang speichert Lotus Notes ein bestimmtes Datum/eine bestimmte Uhrzeit als Zahl und Backstage, @Today = @Integer (@Now), und heute mittag ist @Today + 0.5. (Versuchen Sie es nicht in der Formelsprache, es funktioniert nicht, aber Sie können mit LotusScript spielen, wenn Sie möchten.) @ Heute ist Mitternacht heute Morgen. Daher wird '@Adjust (@Today; 0; 0; 0; 0; -25; 0)' in der vergangenen Nacht immer 23:35 Uhr sein, egal zu welcher Zeit Sie es tun. – JSmart523

3

In der Vergangenheit habe ich die LotusScript-Methode GetModifiedDocuments verwendet, mit der Sie ein NotesDateTime-Objekt angeben können, um alle seither geänderten Dokumente abzurufen. Ihr Code könnte dann wie folgt aussehen:

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) 

Meine Erfahrung mit dieser Methode sehr gut war so weit. Weitere Informationen über GetModifiedDocuments

+0

Guter Punkt. Oder Sie könnten diese 'since'-Variable in der db.Search verwenden. Es wäre eine viel schnellere Suche auf diese Weise. – JSmart523

0

Warum Formel überhaupt verwenden? Ich würde eine versteckte Ansicht erstellen, erste Spalte ist letzte Änderung Datum-Uhrzeit, absteigend sortiert. Dann würde ich meinen Lotusscript-Code schreiben, um ganz oben zu beginnen und nach unten zu arbeiten, bis er auf einen Datums-/Uhrzeitwert stößt, der älter als 25 Minuten ist.

Etwas wie folgt aus:

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. 
Verwandte Themen