Domino 9 und frühere Versionen > Entwicklung

restmonate zwischen heute und enddatum berechnen

<< < (2/6) > >>

nsm:
hallo ata,

meine feldnamen lauten:

fld_in_lidatum       =    startdatum (text)
fld_in_ab_ende      =   enddatum (text)
fld_in_ab_monate_anz   =   anzahl der monate zwischen den beiden datumswerten (text)

vielen dank für deine hilfe

nsm

ata:
... sorry, noch was - bei der Berechnung wird der Start und der End-Monat mitgerechnet, also inklusive...

... wo willst du den Code verwenden, in einer Schaltfläche oder im Postrecalc?...

ata

ata:
... ich hab dir das auf die schnelle mal zusammengeschrieben.
Den kompletten Code fügst du in einer Schaltfläche bei LotusScript in das Ereignis "Click". Die angehängte Funktion löst sich dann von alleine an die richtige Position...

... im Postrecalc verhält es sich genauso, es muß eben LotusScript ausgewählt sein ...

--- Code: ---' # Ich habe den Code in einer Schaltfläche postiert,
' # damit initialisiere ich das doc über ws...  - ata
' # ... berechnet mit Hilfe der Funktion AnzMonate() die Anzahl der
' # ...betroffenen Monate zwischen Start und EndDatum...
' # ... Ich habe keine Validierung der Felder berücksichtigt...
   
   Dim ws As New NotesUIWorkspace
   Dim docThis As NotesDocument
   Dim sStart As String
   Dim sEnd As String   
   
   ' # Set docThis = Source.Document ' # wenn im PostRecalc, dann diese Zeile aktivieren
   Set docThis = ws.CurrentDocument.Document ' # wenn in einer Schaltfläche, dann diese Zeile aktivieren
   
   ' # ... die Feldwerte einlesen
   sStart = docThis.fld_in_lidatum(0)
   sEnd = docThis.fld_in_ab_ende(0)
   
   ' # und den Wert in das Ausgabefeld schreiben
   docThis.fld_in_ab_monate_anz = Cstr(AnzMonate(sStart, sEnd))   
   ' # ... müßte funktionen - ata

Function AnzMonate(StartDatum As String, EndDatum As String) As Integer
' # ata - Liefert die Anzahl der tangierten Monate zurück
' # StartDatum und EndDatum sind Datumsstrings
   AnzMonate = 1 ' # Ein Monat ist mindestens betroffen   
   If AnzJahre(StartDatum, EndDatum) = 1 Then
      ' # Der Zeitraum liegt innerhalb eines Kalenderjahres
      AnzMonate =  Month(Datevalue(EndDatum)) -  Month(Datevalue(StartDatum)) +1
   Else
      ' # Der Zeitraum liegt über mehr als ein Kalenderjahr
      AnzMonate = ((AnzJahre(StartDatum, EndDatum)-1) * 12) + (Month(Datevalue(EndDatum)) -  Month(Datevalue(StartDatum)) +1)
   End If   
End Function

--- Ende Code ---

nsm:
danke, werde es heute abend versuchen

nsm

nsm:
@ ata,

habe dein script eingebaut.

ich erhalte immer eine fehlermeldung.
ich glaube zu wissen, daß eine fumktion ANZJahre fehlt???

was ich noch vergessen habe:
ich habe im ersten posting geschrieben, daß ich restmonate
vom heute bis zum enddatum (fld_in_ab_ende) berechnen möchte.

ich habe bei der faldangabe einen fehler gemacht und dir als
startwert das feld fld_in_lidatum anstelle von @today angegeben.

bitte entschuldige

danek für deine hilfe

nsm

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln