Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Vigeli am 16.08.04 - 17:47:59
-
hallo forum
mit hilfe folgeder formel werden bei mir wochentage problemlos berrechnet:
start=16.08.2004 (07:30)
End=16.08.2004 (17:30)
=1 Tag
_____________________________________________
ddiff:=1 + @Integer((End - Start) / 86400); REM "Zeitdifferenz in Sekunden in ganze Tage umrechnen, 60s/min * 60min/h*24h/Tag = 86400s/Tag";
blocks:=@Integer(ddiff / 7); REM "Zahl der 7-Tage-Blöcke";
rest:=@Modulo(ddiff; 7); REM "Resttage ermitteln mithilfe 7-Tage-Divisionsrest";
swt:=@Weekday(Start);
ewt:=@Weekday(End);
res:=blocks * 5 +
rest +
@If(
rest>0;
@If(swt > ewt; -2; 0) +
@If(swt = 1; -1; 0) +
@If(ewt = 7; -1; 0);
0);
@If(@IsError(res); 0; res)
____________________________________________________
wie muss ich vorgehen um einen halbentag (weniger als 4,5 Std) berrechen zu können?
Besten Dank
-
Deine Formel kapier ich nicht... aber ehrlich gesagt habe ich sie mir nicht genau angesehen, sieht mir zu kompliziert aus...
EDIT: Ich kapier sie doch... aber das ist ja wirklich viel zu kompliziert...
Um die Anszahl der Wochentage zwischen zwei Dati zu bekommen brauchst Du doch keine so komplizierte Formel:
Bsp: 15.08.2004 - 18.08.2004
range := @TextToTime( "[" + @Text( start ) + " - " + @Text( ende ) + "]");
alleTage := @Implode( range );
(ergibt: 15.08 , 16.08, 17.08, 18.08 )
tage := @Weekday( alleTage );
(ergibt 0 ; 1 ; 2 ; 3 ) (0 steht für Sonntag, 6 für Samstag)
tageohneWE := @Trim( @Replace( @Text( tage ) ; "0" : "6" ; "" );
(ergibt 1 ; 2 ; 3 )
anzahlTageOhneWE := @Elements( tageOhneWE );
und für Halbe Tage schaust Du jetzt einfach noch, wie die Start- Zeit und die Endzeit liegen...
HTH
Tode
Hier noch mal die Formel ohne Kommentare:
range := @TextToTime( "[" + @Text( start ) + " - " + @Text( ende ) + "]");
alleTage := @Implode( range );
tage := @Weekday( alleTage );
tageohneWE := @Trim( @Replace( @Text( tage ) ; "0" : "6" ; "" );
anzahlTageOhneWE := @Elements( tageOhneWE );
-
Tode: der korrekte Plural von Datum, wenn man ihn denn schon in "gehobener" Form angeben möchte, wäre Data, was aber wiederum wegen sprachlicher Nichtexistenz eigentlich nicht korrekt ist. Einfacher wäre bestimmt der Ausdruck "zweier (Kalender-)Daten" gewsen :)
-
Die LATEINISCH korrekte Plural- Form von Datum (dare do dedi datum -etwas gegebenes) wäre tatsächlich "DATA"....
Die deutsche Sprache hat sich hier allerdings von der lateinischen wegentwickelt.
Laut Duden ist der korrekte Plural von Datum "Daten".. nicht "Datums", oder "Dati", auch nicht "Datümer"...
nur, um das richtig zu stellen... ;)
Gruß
Tode
-
Sag ich ja
-
habe ich wieder nur die Hälfte gelesen...
Ich gebe mich geschlagen.... ;)
-
hallo tode
.. ich danke dir vielmals für deine bemühungen, echt nett :-) !!!
...ABER ich bin zu blöd dafür, wie kann ich das genau machen?
hier ein beispiel mit einer maske. kannst du mir das mitte erklären?
vielen dank
gruss
vige
-
@Vigeli
Vielleicht wäre es hilfreich zu erklären, was du mit deiner Berechnung erreichen willst. Umreiße doch mal bitte die genaue Problemstellung, ohne dabei bereits eine Lösung zu präsentieren. Leider ist das Problem nicht immer aus der Lösung ersichtlich...
Viele Grüße
Harry
-
..... was mit meiner Berechnung erreichen will?? hier nochmals ein versuch:
ZIEL ist halbe ferientage abzuziehen: wenn weniger als 4,5 Std = 1/2 Tag, wenn mehr als 4,5 Std = 1 Tag abzuziehen
ist ein wenig kompliziert ....
-
Wie werden denn die Urlaubstage eingetragen? Gibt der User ein: Urlaub vom 02.08.04 - 13.08.04 und die Formel soll die Anzahl der Urlaubstage berechnen? Gibt der User die Tage jeweils einzeln und mit Uhrzeit ein?
Wie wäre es, wenn du genau umgekehrt vorgibst und der User eingibt: ich habe 1/1 Tag, 1/2 Tag, x/1 Tage bzw. x/2 Tag Urlaub, ausgehend von einem Ausgangsdatum? Bei Eingabe von 1/2 Tag Urlaub setzt das Script/die Fomel das dann als 7:30 - 12:00 h um (falls die Uhrzeiten überhaupt eine Rolle spielen).
Viele Grüße
Harry
-
richtig:
der user gibt die tage jeweils einzeln und mit uhrzeit wie folgt ein:
urlaub vom 02.08.04 - 13.08.04 - 07:30 - 17:30 Uhr, nd die formel soll die anzahl der urlaubstage berechnen!
oben habe ich eine datenbank als bespiel angehängt
-
Also gut:
Du verwendest erst mal meine erste Formel, um die "Ganzen" Tage zu berechnen.
jetzt brauchst Du noch eine Formel, die prüft, ob der erste Tag ein ganzer oder halber Tag ist, das gleiche für den letzten Tag.
ersterTagAbzug := @If( @Time( start ) > @Time( @TextToTime( "12:00" ) ) ; 0,5 ; 0 );
letzterTagAbzug := @If( @Time( end ) < @Time( @TextToTime( "12:00" ) ) ; 0,5 ; 0 );
ergebnis := anzahlTageOhneWE - ersterTagAbzug - letzterTagAbzug;
HTH
Tode