Domino 9 und frühere Versionen > Entwicklung
restmonate zwischen heute und enddatum berechnen
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