Domino 9 und frühere Versionen > Entwicklung
Wiedervorlage Agent
Don Pasquale:
Hallo Leute,
ich ahne schon, dass ich das Rad neu erfinde ..
Ich benötige wieder Hilfe, mein latein reicht nicht aus.
Ich habe folgendes Script als Aktions-Script realisiert, eigentlich soll daraus ein periodisch laufender Agent werden.
2 Dinge :
- Im Feld e4fldWiedervorlage steht das heutige Datum,
es wird aber nicht erkannt
- Wie mache ich hieraus einen Agenten ?
--- Code: ---
Dim ws As NotesUiWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim user As String
user = session.UserName
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim doc As notesdocument
Set view = session.Currentdatabase.GetView( "e4vwMitarbeiter" )
Set dc = view.GetAllDocumentsByKey(user, True)
Set doc = dc.GetFirstDocument
While Not doc Is Nothing
If doc.e4fldWiedervorlage(0) = Today() Then <- ??????????
Set item = doc.ReplaceItemValue( "e4fldStatus","Wiedervorlage")
Call doc.PutInFolder( "Eigene Dokumente" )
Call doc.Save( True, True )
End If
Set doc = dc.getnextdocument(doc)
Wend
Set view = session.Currentdatabase.GetView( "Eigene Dokumente" )
view.refresh
--- Ende Code ---
Vielen Dank im voraus
Don Pasquale
Rob Green:
verwende bitte die Notesdatetime Klasse und dort die Methode TimeDifference.
Anbei auch ein Beispiel aus der Help, was Du sehr einfach an Deine Bedürfnisse anpassen kannst
This script checks to see if a document has been modified within the last seven days. If it hasn't, it mails a reminder memo to the document's authors.
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim newDoc As NotesDocument
Dim weekDateTime As NotesDateTime
Dim modifiedDateTime As NotesDateTime
Set db = session.CurrentDatabase
'...hier wird das aktuelle Datum gesetzt...
Set weekDateTime = New NotesDateTime( "Today" )
Set modifiedDateTime = New NotesDateTime( "" )
Call weekDateTime.AdjustDay( -7 ) ' set to one week ago
'und hier wird eine weitere Datumsvariable befüllt, diesmal anhand eines Feldwertes
modifiedDateTime.LSLocalTime = doc.LastModified
'und hier der Vergleich beider Datumsvariablen..in deinem Falle würde ich "=" nehmen
If weekDateTime.TimeDifference( modifiedDateTime ) > 0 Then
Don Pasquale:
Hi Rob,
Danke für Deine Hilfe, ich habe allerdings Schwierigkeiten bei der Umsetzung,
modifiedDateTime.LSLocalTime = doc.LastModified
Hier wird ja wohl die Doc.Property genommen,
ich habe aber ein Feld.
Wie stricke ich diese Zeile um, dass es passt ?
Ciao
Don Pasquale
Rob Green:
wie gesagt, ;), wenn Du in der Help bei NotesDateTime nachsiehst, wirst Du genau bei dieser Klasse massig Beispiele finden.
Prinzipiell ist das Helpsystem so aufgebaut, daß zu jeder Klasse, Methode und Eigenschaft jeweils ein / mehrere Beispiele aufgeführt sind.
Wenn Dir also eine Klasse nicht klar ist, wie sie tickt, dann schau Dir zu der Klasse selbst die Beispiele an. Achte mal dort besonders auf ein "item" und "datetimevalue". ;)
Ist wirklich gut gemacht das Helpsystem.
Don Pasquale:
Hi Rob,
Das ist das was im Allgemeinen Zaunpfahl genannt wird,
stimmt´s
Das ist meine Aktuelle Lösung, diese nimmt aber nicht das heutige Datum sondern alles was älter ist als heute
(eigentlich sogar richtiger)
--- Code: ---
Dim weekDateTime As NotesDateTime
Dim modifiedDateTime As NotesDateTime
Set weekDateTime = New NotesDateTime( "Heute" )
Set modifiedDateTime = New NotesDateTime( "" )
Dim ws As NotesUiWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim user As String
user = session.UserName
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim doc As notesdocument
Set view = session.Currentdatabase.GetView( "e4vwMitarbeiter" )
Set dc = view.GetAllDocumentsByKey(user, True)
Set doc = dc.GetFirstDocument
Dim item As NotesItem
Dim dateTime As NotesDateTime
While Not doc Is Nothing
If doc.e4fldWiedervorlagedatum(0) <>"" Then
Set item = doc.GetFirstItem("e4fldWiedervorlagedatum")
Set modifiedDateTime = item.DateTimeValue
End If
If weekDateTime.TimeDifference( modifiedDateTime ) > 0 Then
Set item = doc.ReplaceItemValue( "e4fldStatus","Wiedervorlage")
Call doc.PutInFolder( "Eigene Dokumente" )
Call doc.Save( True, True )
End If
Set doc = dc.getnextdocument(doc)
Wend
Set view = session.Currentdatabase.GetView( "Eigene Dokumente" )
view.refresh
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln