Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Pidray am 17.06.10 - 11:00:32

Titel: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Pidray am 17.06.10 - 11:00:32
Hallo @all !

ich habe im Forum die Möglichkeit o.g. Differenz zu ermitteln gefunden (danke @koehlerbv):
     diff := @If(@IsTime(Endtag) & @IsTime(Starttag); (@Date (Endtag) - @Date (Starttag)) / 86400; 0);

Nun will ich auswerten, ob diff >20:
     @if(diff>20; then ; else);

aber es wird immer then ausgeführt, egal ob diff=9 oder diff=190 !

also habe ich mir das mal ausgeben lassen:
     @Prompt([Ok]; "diff >20 ?"; @Text(diff>20));
     @Prompt([Ok]; "diff <=20 ?"; @Text(diff<=20));

in beiden Fällen ist das Ergebnis = 1 ! Was mache ich falsch ?
@isNumber(diff) liefert ebenfalls 1, dann sollte diff>20 doch machbar sein, oder ?

Schon mal Danke im Voraus !

Gruß
Katrin
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Axel am 17.06.10 - 11:18:28
Ich hab das mal auf die Schnelle nachgestellt und es funktioniert so wie es soll. Ich habe diese Formel verwendet:


diff := @If(@IsTime(Endtag) & @IsTime(Starttag); (@Date (Endtag) - @Date (Starttag)) / 86400; 0);
@Prompt([Ok]; "Diff"; @Text(diff));
@if(diff>20; @Prompt([Ok]; "Diff"; "Diff > 20") ; @Prompt([Ok]; "Diff"; "Diff<=20"));


Sind die beiden Felder vom Typ Datum/Zeit? Lass dir mal direkt nach der Berechnung den WErt von diff ausgeben.

Axel
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Pidray am 17.06.10 - 12:00:30
Danke für die schnelle Antwort !
Wert von diff ?
@Prompt([Ok]; "diff ="; @Text(diff));
Ergebnis für Dok1 = 9
Ergebnis für Dok2 = 190


Starttag := @TextToTime(@Unique(t1 : t2 : t3));
Endtag := @Now;

     t1,t2,t3 = Substrings je eines Textfeldes (welches Datum und Text enthält - oder leer ist),
                   um nur das Datum zu ermitteln

@IsTime(Starttag) liefert 1    also TRUE
@IsTime(Endtag)   liefert 1

@IsNumber(diff)    liefert 1


diff>20    UND    diff<=20     liefern beide 1

Also egal, ob ich     @if(diff>20; then ; else);
oder                     @if(diff<=20; then ; else);
schreibe, es wird in beiden Fällen then ausgeführt ...


Gruß + Dank
Katrin
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: ascabg am 17.06.10 - 12:31:52
Hallo,

Was steht denn in t1, t2, t3 drin?


Andreas
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Pidray am 17.06.10 - 12:46:28
Was steht denn in t1, t2, t3 drin?
z.B:
     wenn Feld_T1 = "OK 09.12.2009 13:41:54   Vorname Name"
     dann t1 := @Middle( Feld_T1;"OK ";10)   
     also = "09.12.2009"

     (Feld_T1 war ursprünglich nur als LOG-Feld geplant, nun brauche ich daraus das Datum;
     es kann aber auch leer/ungefüllt sein)


oder liegt es irgendwie an meinem Liste-bilden  (t1:t2:t3)? Muss ich vorher noch ein @implode drumlegen ?
Aber mein Starttag := @TextToTime(@Unique(t1 : t2 : t3)) wird mir korrekt als @isTime=TRUE angezeigt ...

Gruß
Katrin
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: BigWim am 17.06.10 - 13:21:42
Ich habe das mal so nachgestellt:

Code
_Start := "01.10.2010":"02.10.2010":"03.10.2010";
_Ende := "20.10.2010":"22.10.2010":"24.10.2010";

Starttag := @TextToTime(_Start);
Endtag := @TextToTime(_Ende);

 diff := @If(@IsTime(Endtag) & @IsTime(Starttag); (@Date (Endtag) - @Date (Starttag)) / 86400; 0);

@Prompt([Ok]; "diff >20 ?"; @Text(diff));

und würde damit Deine Vermutung stützen, dass es mit der Datumsliste zusammenhängt. Denn es wird in dem obigen Beispiel nur die 19 ausgeben und damit ist das Ergebnis von Diff < 20 immer gleich!

Was die Operationen mit Listen betrifft, bin ich nicht so sattelfest (habe selbst noch einige Links von Superbeispielen, komme aber leider nicht dazu, mit näher damit zu beschäftigen).

Vielleicht schreibst Du mal, was Du mit dem Vergleich von Datumslisten überhaupt erreichen willst.

Markus
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Pidray am 17.06.10 - 13:30:17
Muss ich vorher noch ein @implode drumlegen ?
Scheint doch an der Liste (t1:t2:t3) zu liegen, vermutlich durch eventuelle leere Werte (t1 und t2 haben gleiches Datum, t3 war leer) ?
Mit @implode gibt es ein korrektes Ergebnis bei Abfrage von diff>20


Starttag := @TextToTime(@implode(@Unique(t1:t2:t3)));


Nochmals Danke für den Denkanstoß !

Gruß
Katrin
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Pidray am 17.06.10 - 13:34:21
Vielleicht schreibst Du mal, was Du mit dem Vergleich von Datumslisten überhaupt erreichen willst.
Ich wollte je nach Zeitspanne unterschiedliche Aktionen ausführen.
Nur wenn mein Datum Starttag max. 20 Tage zurückliegt, soll eine Mail gesendet werden, sonst nicht.

Nochmals Danke !
Katrin
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: WernerMo am 17.06.10 - 20:11:20
Hallo

20 Tage sind aber keine Dif 20, Dif wird in Sekunden angegeben.
Den notwendigen Faktor für Tage hat Dir Axel schon oben angegeben.

Gruß Werner
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: koehlerbv am 17.06.10 - 23:31:17
Werner, bitte lese diesen Thread komplett  ;) Katrin outet sich schon im allerersten Post als Kundige dieser Tatsache und dividiert durch 24 * 60 * 60 (=86400).

Bernhard
Titel: Re: Differenz zwischen zwei Datumswerten auswerten
Beitrag von: Pidray am 18.06.10 - 07:52:21
Katrin outet sich schon im allerersten Post als Kundige dieser Tatsache
kundig ? naja, zumindest beherrsche ich copy&paste; hab doch geschrieben, dass ich Deine Formel übernommen hatte
 ;)

@Werner:
anhand meiner Werte für diff (9 bzw. 190) habe ich gesehen, dass es Tage sind.

Gruß+Dank
Katrin