Datumsvergleich - Formelsprache

  • Hallo Gleichgesinnte,
    ich muss zwei Datumsfelder miteinander vergleichen, im Forum habe ich nur Datumsvergleiche für Lotus Script gefunden...


    Wie kann ich Datumsfelder von einander abziehen, das ich eine Zahl bekomme.


    Beispiel:
    Datum1 = 03.11.2007 minus
    Datum2 = 08.11.2007
    Ergibt 5


    Variable := Datum2 - Datum1


    Mit dem Wert aus der Variablen muss ich eine Schleife durchlaufen.
    Also in meinem Beispiel 5 mal. Leider ist meine Variable immer leer. Hat jemand einen Tipp?


    Gruß und Danke Karin

    • Offizieller Beitrag

    geht so:

    Code
    dat1 := @TextToTime("03.11.2007");
    dat2 := @TextToTime("08.11.2007");
    @Prompt([OK]; ""; @Text((dat2- dat1) / 60 / 60 /24))


    Falls Du mit dem Datum weiterarbeiten musst, dann arbeite besser mit @Adjust und zähle das Startdatum so lange hoch, bis das Enddatum erreicht ist.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • das funktioniert leider nicht...


    Ich weiß ja nicht, was in den Datumsfeldern drinsteht. Das war nur ein Beispiel mit dem 03. und 08.11.


    Also, ich habe zwei Felder: Datum1 und Datum2


    Bedingungen:
    1. Datum2 darf nicht vor Datum1 liegen


    @If(Datum1 > Datum2; @Failure("Das bis-Datum liegt vor dem von-Datum. Bitte korrigieren Sie Ihre Angaben."); @Success);


    2. Wenn erste Bedingung erfüllt ist muss ich die Tage rauskriegen.
    Beispiel: beim Datum1 wurde der 03.11. und beim Datum2 wurde der 08.11. angegeben.
    _Tage := Datum2 - Datum1;
    dann soll in der Variablen _Tage eigentlich 5 stehen.


    3. Der Unterschied darf nicht größer als 7 Tage sein (also eine Woche), sonst kommt eine Fehlermeldung.


    4. Wenn alle Bedingungen erfüllt sind, sollen 5 Mails verschickt werden (um bei meinem Beispiel zu bleiben).


    Das war's glaube ich...
    Ist ein bisschen unübersichtlich aber ich hoffe ihr versteht's?

    • Offizieller Beitrag

    in _Tage steht die Anzahl der Sekunden drin.

    Code
    _Tage := @If(@Text(Datum1) = "" | @Text(Datum2) = ""; 0;
       Datum1 > Datum2; 0;
       ((Datum2 - Datum1) / 60 / 60 /24) + 1);
    @If(_Tage > 0 & _Tage < 8; 
    @For(...);
    ...)


    Gruß
    Dirk

  • wenn das datum1 nicht 'älter' als 7 tage sein soll, dann vergleich doch datum2 mit @adjust(datum1; + 7 tage) bzw. je nach dem wie deine konstellation sein soll.

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • vielen dank für eure Hinweise,
    ich habe es jetzt wie Folgt gelöst:


    _wochentag := @Weekday(lieferdatum);
    _tage := ((lieferdatum_1 - lieferdatum) / 60 / 60 /24) + 1;


    @If(
    (_wochentag = 2) & (_tage > 5); @Failure("Eine Sammelbestellung kann nicht über ein Wochenende erfolgen.");
    (_wochentag = 3) & (_tage > 4); @Failure("Eine Sammelbestellung kann nicht über ein Wochenende erfolgen.");
    (_wochentag = 4) & (_tage > 3); @Failure("Eine Sammelbestellung kann nicht über ein Wochenende erfolgen.");
    (_wochentag = 5) & (_tage > 2); @Failure("Eine Sammelbestellung kann nicht über ein Wochenende erfolgen.");
    (_wochentag = 6) & (_tage > 1); @Failure("Eine Sammelbestellung kann nicht über ein Wochenende erfolgen.");
    lieferdatum > lieferdatum_1; @Failure("Das bis-Datum liegt vor dem von-Datum. Bitte korrigieren Sie Ihre Angabe.");
    @Success)


    vielleicht geht es ja noch einfacher ?
    auf jedenfall klappt es so :)


    danke Karin

    • Offizieller Beitrag

    ich hoffe ich habe jetzt keinen Denkfehler drin. Die Zeilen, die mit "(_Wochentag=" beginnen kannst Du wahrscheinlich durch eine ersetzen.
    _wochentag + _tage > 7 & _wochentag <> 1 & _wochentag <> 7; @Failure("Eine Sammelbestellung kann nicht über ein Wochenende erfolgen.");


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein