Domino 9 und frühere Versionen > ND6: Entwicklung
Monat im Script errechnen
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