Domino 9 und frühere Versionen > ND6: Entwicklung

Monat im Script errechnen

(1/4) > >>

RvM:
Ich habe hier eine ältere Web-Anwendung die in den Dokumenten  ein eigenes Zählerfeld beinhaltet. Hier wird bei jedem Webaufruf durch den WebQueryOpen-Event ein Agent angetriggert, der einfach den Zähler um eins erhöht.
Am jeden 1. eines Monats wird dann der Inhalt des Zählers in das entsprechende Monatsfeld übertragen und der Zähler wieder auf Null  gesetzt. Dies wurde mit folgendem Script erledigt:
   Dim Session As New NotesSession
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim loopdoc  As NotesDocument
   Dim item As NotesItem
   
   Set db = session.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   Set loopdoc = coll.GetFirstDocument
   While Not(loopdoc Is Nothing)
      loopdoc.dezember= loopdoc.counter
      loopdoc.counter = 0
      Call loopdoc.Save(True,True,True)               
      Set loopdoc = coll.GetNextDocument(loopdoc)
   Wend
Jetzt ist es natürlich absoluter Blödsinn, jeden Monat das Script zu ändern. Wie kann ich denn per Script den Namen des Vormonats automatisch errechnen lassen?
Sorry für diese Frage - aber scripten ist nicht so mein Ding  ???

dirk_2909:
Hallo

Den aktuellen Monat bekommt man mit

Month( Date )

Im Script kannst Du jetzt folgendes machen:

dim strprevMonthField as String
dim intPMonth as Integer

intPMonth = Month( Date ) - 1
if intPMonth < 1 Then intPMonth = 12

strPrevMonthField = "fldMonat" & intPMonth

call doc.ReplaceItemValue( strPrevMonthField , Wert )
....

Glombi:
Hier mal skizziert:

 Dim Session As New NotesSession
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim loopdoc  As NotesDocument
   Dim item As NotesItem
dim monatsname as string
dim monatnr as integer
monatnr = Month(Today) - 1
if monatnr = 0 then
monatnr = 12
end if
   
select case monatnr
case 1: monatsname = "januar"
case 2: monatsname = "februar"


End Select


   Set db = session.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   Set loopdoc = coll.GetFirstDocument
   While Not(loopdoc Is Nothing)
call loopdoc.ReplaceItemValue( monatsname, loopdoc.counter )
      loopdoc.counter = 0
      Call loopdoc.Save(True,True,True)               
      Set loopdoc = coll.GetNextDocument(loopdoc)
   Wend



Andreas

dirk_2909:
Natürlich muss das noch angepasst werden.
zb. eine Umsetzung der Zahl für Monat  in einen Monatswert

beispiel

Select Case intPMonth

case 1 : strPrevMonthField = "Januar"
case 2 : strPrevMonthField = "Februar"
...

case 12 : strPrevMonthField = "Dezember"

End Select

dirk_2909:
da war ich wohl mit dem SelectCase zu langsam  :-[ :-[

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln