Autor Thema: Monat im Script errechnen  (Gelesen 4430 mal)

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Monat im Script errechnen
« am: 05.12.06 - 11:13:57 »
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  ???
-------
Gruß Rolf
--------------

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Monat im Script errechnen
« Antwort #1 am: 05.12.06 - 11:23:37 »
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 )
....
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Glombi

  • Gast
Re: Monat im Script errechnen
« Antwort #2 am: 05.12.06 - 11:25:01 »
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
« Letzte Änderung: 05.12.06 - 11:26:54 von Glombi »

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Monat im Script errechnen
« Antwort #3 am: 05.12.06 - 11:26:55 »
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

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Monat im Script errechnen
« Antwort #4 am: 05.12.06 - 11:27:50 »
da war ich wohl mit dem SelectCase zu langsam  :-[ :-[
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Monat im Script errechnen
« Antwort #5 am: 05.12.06 - 11:39:35 »
Ich hätte das mit einer Function gelöst:

Code
...
   Dim Session As New NotesSession
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim loopdoc  As NotesDocument
   Dim item As NotesItem
	Dim iLetzterMonat As Integer
	Dim sMonatsName As String
		
   Set db = session.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   Set loopdoc = coll.GetFirstDocument

	iLetzterMonat = Month(Now()) -1
	If( iLetzterMonat <= 0) Then
		iLetzterMonat = iLetzterMonat +12
	End If
	
	sMonatsName = Monatsname(iLetzterMonat)
        If( sMonatsName <> "" ) Then
		Goto Errorhandling
	End If

   While Not(loopdoc Is Nothing)
      Call loopdoc.ReplaceItemValue( sMonatsName, loopdoc.counter )
      loopdoc.counter = 0
      Call loopdoc.Save(True,True,True)               
      Set loopdoc = coll.GetNextDocument(loopdoc)
   Wend
...

Function Monatsname (imonat As Integer) As String
	Dim SMonatsNamen(12) As String
	sMonatsNamen(0) = "Jänner"
	sMonatsNamen(1) = "Februar"
	sMonatsNamen(2) = "März"
	sMonatsNamen(3) = "April"
	sMonatsNamen(4) = "Mai"
	sMonatsNamen(5) = "Juni"
	sMonatsNamen(6) = "Juli"
	sMonatsNamen(7) = "August"
	sMonatsNamen(8) = "September"
	sMonatsNamen(9) = "Oktober"
	sMonatsNamen(10) = "November"
	sMonatsNamen(11) = "Dezember"
	
	If( imonat < 1 Or imonat > 12) Then
		Monatsname = ""
	Else
		Monatsname = sMonatsNamen(imonat-1)
	End If
	
End Function
« Letzte Änderung: 05.12.06 - 11:41:53 von m3 »
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline RvM

  • Senior Mitglied
  • ****
  • Beiträge: 375
  • Geschlecht: Männlich
  • Domino: Geht nicht - gibt's nicht
    • PhotosForFree
Re: Monat im Script errechnen
« Antwort #6 am: 05.12.06 - 11:43:19 »
Danke - ihr seit Spitze!! :knuddel:
-------
Gruß Rolf
--------------

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Monat im Script errechnen
« Antwort #7 am: 05.12.06 - 11:45:53 »
Martins Code ist nicht ganz Richtig.
Der geht zwei Monate zurück...
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Glombi

  • Gast
Re: Monat im Script errechnen
« Antwort #8 am: 05.12.06 - 11:46:51 »
Da setze ich noch einen drauf  ;D
Wozu einee eigene Funktion für einen EINZEILER  ;)

sMonatsName = Format$( <Datum>, "mmmm" )


 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
dim ndt as NotesDateTime
set ndt = New NotesDateTime( Now )
call ndt.AdjustMonth(-1)
monatsname = Format$( ndt.LSLocalTime, "mmmm" )

   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
« Letzte Änderung: 05.12.06 - 11:49:12 von Glombi »

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Monat im Script errechnen
« Antwort #9 am: 05.12.06 - 11:52:31 »
Martins Code ist nicht ganz Richtig.
Der geht zwei Monate zurück...
Nope. Ein Monat zurück. Das zweite "-1" ist für das Array (Base 0 !!!).

@glombi: Streber!  ;) ;D
Deine Lösung hat aber den Nachteil, dass immer englische Monatsnamen herauskommen.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Monat im Script errechnen
« Antwort #10 am: 05.12.06 - 11:54:14 »
Zitat
monatsname = Format$( ndt.LSLocalTime, "mmmm" )

Und wenn ich auf einem englischen Server den deutschen Monatsnamen haben will.... ??
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Glombi

  • Gast
Re: Monat im Script errechnen
« Antwort #11 am: 05.12.06 - 11:58:30 »
Ihr Korinthenkacker, Ihr Erbsenzähler  ;D

Aber zum Glück ist Notes ja intelligent und liefert den deutschen Monatsnamen (sofern das im BS eingestellt ist)

Auf einem englischen Server muss dann halt die m3 Function her.
Und auch wenn man auf einem deutschen Server/Client die englische Bezeichnung haben will  ;)

Andreas
« Letzte Änderung: 05.12.06 - 12:00:05 von Glombi »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Monat im Script errechnen
« Antwort #12 am: 05.12.06 - 12:00:09 »
Nope. Ein Monat zurück. Das zweite "-1" ist für das Array (Base 0 !!!).

Wegen Ordnung und Sauberkeit im Schlachthof, Martin: Dann aber auch
Dim sMonatsnamen (11). Das Element 12 brauchst Du ja gar nicht, das langweilt sich doch nur  ;D

Bernhard

Glombi

  • Gast
Re: Monat im Script errechnen
« Antwort #13 am: 05.12.06 - 12:02:29 »
sMonatsNamen(0) = "Jänner"

"Jänner" - was ist denn das?  ;D

Wir brauchen dann noch eine Unterscheidung

Function Monatsname (imonat As Integer) As String

Function Monatsname_Oesis (imonat As Integer) As String

Andreas

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Monat im Script errechnen
« Antwort #14 am: 05.12.06 - 12:04:04 »
Stimmt  ::) Sorry, immer dieses Base 0 und 12 Monate...  ;D

Wie war das, die Diskette hat die Spuren von 0 - 39 und ist beidseitig Beschreibbar, wieviele Spuren hat die Diskette... ?

Und Juno und so...  ;)
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Monat im Script errechnen
« Antwort #15 am: 05.12.06 - 12:15:28 »
sMonatsNamen(0) = "Jänner"

"Jänner" - was ist denn das?  ;D

Wir brauchen dann noch eine Unterscheidung

Function Monatsname (imonat As Integer) As String

Function Monatsname_Oesis (imonat As Integer) As String

Andreas
  :P

Also wenn wir so anfangen, brauchen wir Dokumente mit einem "lang" Feld wo z.B. "de-at" drinnen steht und einem Multivalue Textfield für die Monatsnamen. Dann könnte man über ein View .....

@Bernhard: Ich hau immer lieber eins mehr dazu, dann brauch ich nicht nachdenken. ;)
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz