Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: comet am 09.05.05 - 10:22:50
-
für eine arbeitszeitberechnung verwende ich folgende formel
Min := ( End - Start ) / 60 ;
RestMin := @Modulo ( Min ; 60 ) ;
Std := @Hour ( End ) - @Hour ( Start );
StdAnzeige := @If (
@Hour ( End ) <= @Hour ( Start ) & @Minute ( End ) < @Minute ( Start ) ; Std +23 ;
@Hour ( End ) < @Hour ( Start ) & @Minute ( End ) >= @Minute ( Start ) ; Std +24 ;
@Hour ( End ) > @Hour ( Start ) & @Minute ( End ) < @Minute ( Start ) ; Std -1 ;
Std ) ;
RestMinAnzeige := @If (
@Hour ( End ) <= @Hour ( Start ) & RestMin > -60 & RestMin < -50 ; "0" + @Text ( RestMin + 60 ) ;
RestMin < 0 ; @Text ( RestMin + 60 ) ;
RestMin < 10 ; "0" + @Text ( RestMin ) ;
@Text ( RestMin ) ) ;
@If ( Start = "" | End = "" ; "" ;
@Text ( StdAnzeige ) + ":" + RestMinAnzeige )
leider zieht diese formel lediglich die startzeit von der endzeit ab.
nun soll jedoch ein weiteres feld "Pause" hinzukommen. kann mir jmd nen tipp geben, wie ich das einbinden kann.
-
Rechne doch alles in Minuten um und rechne mit den Minutenwerten weiter - ist einfacher und weniger Code.
_start := @Hour(Start) * 60 + @Minute(Start);
_end := @Hour(end) * 60 + @Minute(end);
_AZ_brutto := _end - _start;
_AZ_netto := _AZ_brutto - Pause;
_AZ_netto_Stunden := @Integer(_AZ_netto / 60);
_AZ_netto_Minuten := _AZ_netto - _AZ_netto_Stunden *60;
_txt_AZ_netto := @Text(_AZ_netto_Stunden) + ":" + @right("00" + @Text(_AZ_netto_Minuten);2)
-
dein code funzt aber nicht
der code ist schon sinnvoll, da dieser auch arbeitszeiten von 22.00 bis 6.15 uhr berücksichtigt.
sonst müsste man 21.59-23.59 und 0-6.15h eingeben, dass wollten wir ja nicht haben
-
Ist die Pause ein Zeit, ( 30min ) oder eine Zeitspanne ( 12:30 - 13:30) ?
gruss
umi
-
format 01:00 oder 00:30 oder 00:45 z.b.
-
tragt ihr denn Datum und Zeit ein?
Was ist mit Diensten länger 24 Stunden?
Mit (Pause in Minuten)
_AZ_netto := (StdAnzeige * 60 + RestMinAnzeige) - Pause
_AZ_netto_Stunden := @Integer(_AZ_netto / 60);
_AZ_netto_Minuten := _AZ_netto - _AZ_netto_Stunden *60;
_txt_AZ_netto := @Text(_AZ_netto_Stunden) + ":" + @right("00" + @Text(_AZ_netto_Minuten);2)
hast Du doch die Lösung - Oder etwa nicht?
-
es gibt folgende felder:
author - für erfasser der arbeitszeit
datum - beginndatum der schicht: format 09.05.2005
start - uhrzeit schichtbeginn format: 22:00
ende - uhrzeit schichtende format 06:15
Pause - format 00:30 für 30 min
time - berechnetes feld, wo die arbeitszeit abzüglich pause berechnet werden soll
schichten über 24 std gibt es nicht
-
Pause ist vom Typ String - richtig?
Dann kannst Du mit
_Pause := @TextToNumber(@Word(Pause;":";1)) *60 + @TextToNumber(@Word(Pause;":";2));
die Pause in Minuten ausrechnen.
schichten über 24 std gibt es nicht
, dann kannst Du bei negativen Ergebnissen einfach 24 Addieren!
-
komisch bei mir zieht er die pause trotzdem nicht ab
-
poste mal bitte den Code, den Du jetzt benutzt.
-
Min := ( End - Start ) / 60 ;
RestMin := @Modulo ( Min ; 60 ) ;
Std := @Hour ( End ) - @Hour ( Start );
StdAnzeige := @If (
@Hour ( End ) <= @Hour ( Start ) & @Minute ( End ) < @Minute ( Start ) ; Std +23 ;
@Hour ( End ) < @Hour ( Start ) & @Minute ( End ) >= @Minute ( Start ) ; Std +24 ;
@Hour ( End ) > @Hour ( Start ) & @Minute ( End ) < @Minute ( Start ) ; Std -1 ;
Std ) ;
RestMinAnzeige := @If (
@Hour ( End ) <= @Hour ( Start ) & RestMin > -60 & RestMin < -50 ; "0" + @Text ( RestMin + 60 ) ;
RestMin < 0 ; @Text ( RestMin + 60 ) ;
RestMin < 10 ; "0" + @Text ( RestMin ) ;
@Text ( RestMin ) ) ;
@If ( Start = "" | End = "" ; "" ;
@Text ( StdAnzeige ) + ":" + RestMinAnzeige );
_Pause := @TextToNumber(@Word(Pause;":";1)) *60 + @TextToNumber(@Word(Pause;":";2));
_AZ_netto := (StdAnzeige * 60 + RestMinAnzeige) - Pause;
_AZ_netto_Stunden := @Integer(_AZ_netto / 60);
_AZ_netto_Minuten := _AZ_netto - _AZ_netto_Stunden *60;
_txt_AZ_netto := @Text(_AZ_netto_Stunden) + ":" + @right("00" + @Text(_AZ_netto_Minuten);2)
-
in der Zeile
_AZ_netto := (StdAnzeige * 60 + RestMinAnzeige) - Pause;
fehlt ein Unterstrich
_AZ_netto := (StdAnzeige * 60 + RestMinAnzeige) - _Pause;
Als letzte Zeile müsstest Du noch folgendes einfügen:
_txt_AZ_netto
-
leider zieht er trotzdem die pause nicht ab.
füge ich die letzte zeile hinzu kommt ne nette fehlermeldung, egal ob ich das feld als berechnetes zahlen oder textfeld setze
Min := ( End - Start ) / 60 ;
RestMin := @Modulo ( Min ; 60 ) ;
Std := @Hour ( End ) - @Hour ( Start );
StdAnzeige := @If (
@Hour ( End ) <= @Hour ( Start ) & @Minute ( End ) < @Minute ( Start ) ; Std +23 ;
@Hour ( End ) < @Hour ( Start ) & @Minute ( End ) >= @Minute ( Start ) ; Std +24 ;
@Hour ( End ) > @Hour ( Start ) & @Minute ( End ) < @Minute ( Start ) ; Std -1 ;
Std ) ;
RestMinAnzeige := @If (
@Hour ( End ) <= @Hour ( Start ) & RestMin > -60 & RestMin < -50 ; "0" + @Text ( RestMin + 60 ) ;
RestMin < 0 ; @Text ( RestMin + 60 ) ;
RestMin < 10 ; "0" + @Text ( RestMin ) ;
@Text ( RestMin ) ) ;
@If ( Start = "" | End = "" ; "" ;
@Text ( StdAnzeige ) + ":" + RestMinAnzeige );
_Pause := @TextToNumber(@Word(Pause;":";1)) *60 + @TextToNumber(@Word(Pause;":";2));
_AZ_netto := (StdAnzeige * 60 + RestMinAnzeige) - _Pause;
_AZ_netto_Stunden := @Integer(_AZ_netto / 60);
_AZ_netto_Minuten := _AZ_netto - _AZ_netto_Stunden *60;
_txt_AZ_netto := @Text(_AZ_netto_Stunden) + ":" + @right("00" + @Text(_AZ_netto_Minuten);2);
-
wie lautet die FM?
Ist Pause immer im Format 00:00 eingetragen?
-
RestMinAnzeige ist doch Text oder?
Was macht es dann in der _AZ_Netto formel?
-
der Fehler liegt in der RestMinAnzeige. Weil die schon ein Text ist und in der Zeile
_AZ_netto := (StdAnzeige * 60 + RestMinAnzeige) - _Pause;
bin ich davon ausgegangen, dass es sich wie bei StdAnzeige um eine Zahl handelt.