Autor Thema: Datum aktualisieren per Agent + AdjustMonth  (Gelesen 1497 mal)

Offline stussy

  • Frischling
  • *
  • Beiträge: 13
  • Geschlecht: Männlich
    • Webdesign von Anfang bis Erfolg
Datum aktualisieren per Agent + AdjustMonth
« am: 12.04.05 - 14:05:01 »
Hi,

ich habe ein kleines Problem und hoffe das mir hier jemand helfen kann.
Es geht um folgendes:

Ich habe einen Agenten, der sich ein Datum holt und solange 2 Monate draufzählt, bis das Datum in der Zukunft liegt.

Soweit sogut...

Jetzt ist mir aufgefallen das in meinem Script im Februar ein Fehler auftritt.

Beispiel:

StartDatum: 31.12.2004
+ 2 Monate = 28.02.2005
+ 2 Monate = 28.04.2005 (statt 30.04.2005!!!) :-\

Hier ist mal ein Teil aus dem Agenten:

      If Status = "läuft"  And Cdat(AblaufKD.DateOnly) < Today And TurnusAktiv = "ja" Then
         
         Dim Ablauf As New NotesDateTime(Cstr (doc.datVTAblauf(0)))
         
         Do Until Cdat(Ablauf.DateOnly) > Today
            Turnus = Cint(doc.numVTKuendTurnus(0))
            Call Ablauf.AdjustMonth(Turnus)
            doc.datVTAblauf = Ablauf.DateOnly
            Ablaufdatum = Ablauf.DateOnly
         Loop
      End If

Bitte helft mir :)

Danke

Offline Bastel123

  • Senior Mitglied
  • ****
  • Beiträge: 355
  • Geschlecht: Männlich
Re: Datum aktualisieren per Agent + AdjustMonth
« Antwort #1 am: 12.04.05 - 17:27:34 »
Hallo,

da kann man nur tricksen. Wenn es immer der letzte Tag das Monats sein soll musst mann sich das neue Datum zusammensetzen.  Drei Monate addieren, dann Tag auf 01 setzen. Davon dann einen Tag abziehen.

Also
28. Februar 05      + 3 Monate
-> 28. Mai 2005     auf ersten Tag setzen
-> 01. Mai 2005     einen Tag abziehen
-> 30. April 2005

Ist ein wenig Aufwand, aber immer noch besser als mit dem 28. 29. 30. oder 31. einen Monats zu rechnen.

Gruß Bastel123
Gruß Sebastian
-----------------------------------------------------
Kaum macht man's richtig, schon funktioniert's.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datum aktualisieren per Agent + AdjustMonth
« Antwort #2 am: 12.04.05 - 17:45:28 »
Soviel Aufwand ist das gar nicht, Bastel. Vor allem kann man dabei auf das Dealen mit der NotesDateTime class verzichten. Man kann alles mit Variants vom Typ 7 (DATETIME) machen.

- StartDate holen und Variant zuweisen
- Mit DateNumber den ersten Tag des Monats bilden und dabei gleich x Monate daraufzählen.
- Vom Zieldatum (Variant !) einfach 1 abziehen - das wäre der letzte des betreffenden Vormonats.

A-Bär: "stussy" will m.E. gar nicht immer den letzten des Monats haben - er hat sein Problem MIT dem Ultimo, wenn sein StartDate denn darauf fällt. Sein Problem ist: Er verändert permanent das Ausgangsdatum, vielmehr müsste es heissen (und hier durchaus mit der NotesDateTime class):
- Ausgangsdatum nehmen, plus zwei Monate -> prüfen, ob er über dem Limitdatum ist.
- Wenn nicht, Ausgangsdatum (!) nehmen, jetzt plus vier Monate (das muss also die Schleifenvariable sein) und wieder prüfen.

Was ich an seiner Lösung aber für arg gefährlich halte, ist das Speichern der Datumswerte in Textfeldern. Über kurz oder lang führt das zum "big Bang" (da braucht nur mal das OS eines beteiligten Computers auf ein anderes Datumsformat umgestellt werden ...). Datums-/Zeitwerte gehören meines Erachtens immer in Datums-/Zeitfelder. Für die Anzeige oder andere unkritische Aufgaben kann man dann ja on the fly immer noch in Text ändern.

Bernhard


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz