Autor Thema: restmonate zwischen heute und enddatum berechnen  (Gelesen 8079 mal)

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
restmonate zwischen heute und enddatum berechnen
« am: 02.12.02 - 18:21:23 »
 ???

hallo leute,
ich habe ein problem mit der datumsberechnung.

user füllt das feld A (TEXT) mit einen datumswert, feld B (ZAHL) hat den wert 36.
feld C berechnet das enddatum (feld A + Feld B)
das funkt auch alles bestens.

nun soll aber im feld D die anzahl der restlichen monate
zwischen heute und dem enddatum (feld C) erscheinen.

ich bring das nicht hin. wer hat einen tip für mich?

danke nsm

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #1 am: 02.12.02 - 19:03:29 »
... in LotusScript habe ich dir sofort eine Lösung...

http://www.anton-tauscher.de/download/DateHandling.zip

... in der Datenbank habe ich eine Library mit en verschiedensten Datumsberechnung, u.a. auch die Anzahl der Monate zwischen zwei Datumsangaben

ata
Grüßle Toni :)

Offline wflamme

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 690
  • Geschlecht: Männlich
  • Irgendwie geht das schon...
    • wflamme
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #2 am: 03.12.02 - 06:39:23 »
nun soll aber im feld D die anzahl der restlichen monate
zwischen heute und dem enddatum (feld C) erscheinen.

Das Problem ist, was Du unter Monate verstehst. Es gibt nämlich welche von 28-31 Tagen, also ist 'Monat' kein zulässiges Zeitmaß, sondern muß definiert werden.
Grüße,
Wolfgang

"I love deadlines. I love the whooshing sound they make as they pass by..."
DOUGLAS ADAMS

wflamme@mainz-online.de
http://www.sns1.de/partner/flamme/wflamme.nsf

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #3 am: 03.12.02 - 09:29:19 »
danke für die raschen antworten!

@ ata,
ich behersche leider kein script - ist es möglich diese eine funktion
bei mir einzubauen?


nsm

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #4 am: 03.12.02 - 13:28:10 »
... wie heißen deine Felder? Ich schicke dir den Code dann zu...

ata
Grüßle Toni :)

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #5 am: 03.12.02 - 14:25:05 »
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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #6 am: 03.12.02 - 14:28:54 »
... 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
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #7 am: 03.12.02 - 15:26:40 »
... 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
« Letzte Änderung: 03.12.02 - 15:35:30 von ata »
Grüßle Toni :)

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #8 am: 03.12.02 - 18:10:46 »
danke, werde es heute abend versuchen

nsm

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #9 am: 04.12.02 - 09:53:17 »
@ 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

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #10 am: 04.12.02 - 10:39:52 »
... sorry, da war ich wohl zu schnell.... hier ist die Funktion AnzJahre

Function AnzJahre(StartDatum As String, EndDatum As String) As Integer
' # ata - Liefert die Anzahl der tangierten Jahre zurück
   AnzJahre = Year(Datevalue(EndDatum)) -  Year(Datevalue(StartDatum)) +1
End Function

Auch dort einfügen...

anstelle von
    sStart = docThis.fld_in_lidatum(0)
gibst du
   sStart = Today()
ein...

ata



Grüßle Toni :)

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #11 am: 04.12.02 - 12:04:04 »
super, super, super, ;D ;D ;D

danke läuft sehr gut

nsm

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #12 am: 04.12.02 - 13:09:19 »
hallo ata,

nun habe ich noch eine frage zu deinem script:

kann ich das ganze auch in einem agent verwenden?
wenn ja, was muß ich umstallen?

vielen dank
nsm

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #13 am: 04.12.02 - 13:15:58 »
Generell lässt sich das Script auch in einem Agent verwenden, es kommt allerdings darauf an...

... was hast du denn vor?
Den Agent verwenden, um im Frontend-Dokument was zu ändern,
oder nur im Backend arbeitend was ändern?

Im Frontend ändern funktioniert wie ich dir den Code gesendet habe. Du musst eben die beiden Funktionen auch in den Agenten übernehmen...

Bei Backend mußt du dir die Dokumente anders initialisieren, über eine View, DokumentCollection, oder was auch immer...

ata

Grüßle Toni :)

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #14 am: 04.12.02 - 13:25:25 »
hallo ata,

ich habe nun folgendes problem:

wenn ich den code ins postrecalc stelle, erhalte ich beim öffnen
und jeder aktion eine fehlermeldung, daß in einem verwendeten
feld kein wert steht. das ist ja auch kalr, da ich ja erst mit dem
befüllen der maske beginne.

nun war meine idee, den code über einen agenten auszulösen
wenn das doc bearbeitet wird.


das ist das eine, das andere stellt sich wie folgt dar:
ich errechne aufgrund des wertes der such das script ermittelt wird
eine summe. nun ist dise summe nur aktuell, wenn ich das doc
bearbeite das script susführe und erneut speichere.

diese summe soll allerdings in einer view angezeit werden.
meine idee dazu, ein agent der die monatsberechnung jeden
1 eines monats aktualisiert. somit habe ich immer monatsaktuelle
views.

oder sehe ich da was falsch?

nsm

Offline Polarbaer

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
  • Whatever kills you, will not make you stronger!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #15 am: 04.12.02 - 13:43:07 »
mit Formelsprache:

(@Year(feldC) - @Year(@Today))*12+(@Month(feldC) - @Month(@Today))

vielleicht reicht das ja auch?

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #16 am: 04.12.02 - 15:37:24 »
@ Polarbaer

bei dieser formel erhalte ich einen wert von zb -22024.
ich glaube nicht, daß es damit geht.

nsm

Offline Polarbaer

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
  • Whatever kills you, will not make you stronger!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #17 am: 04.12.02 - 16:09:09 »
dann schau Dir mal die Werte @Year(feldC) und @Year(@Today) an. @Year(@Today) sollte 2002 liefern und  @Year(feldC) etwas aehnliches. Diese Differenz (in Klammern!) mal 12 ergibt wieder einen kleinen Wert (0,12,24,36,...) Die Differenz der Monate liegt irgendwo zwischen -11 und 11. Also ist -22024 eigentlich ausgeschlossen ???
« Letzte Änderung: 04.12.02 - 16:21:52 von Polarbaer »

Offline nsm

  • Frischling
  • *
  • Beiträge: 44
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #18 am: 05.12.02 - 13:13:16 »
@ Polarbaer

hatte das problem, daß die umwandlung von text nach date
und das gleichzeitige berechnen nicht geklappt hat.

habe das genze in zwei neue felder gesetzt und siehe da
es geht.

danek für deine hilfe.

@ ata

danke für die hilfe.

ich muß mir erst noch klrwerden welche der beiden lösungen
ich verwenden werde.

Offline Polarbaer

  • Aktives Mitglied
  • ***
  • Beiträge: 197
  • Geschlecht: Männlich
  • Whatever kills you, will not make you stronger!
Re:restmonate zwischen heute und enddatum berechnen
« Antwort #19 am: 05.12.02 - 13:20:52 »
@nsm
...gern geschehen, keine Ursache...aber wenn ich die Formel mit dem Script vergleiche, so ist das Script doch "mit Kanonen auf Spatzen schiessen", oder?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz