Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: comet am 09.05.05 - 10:22:50

Titel: arbeitszeit berechnen
Beitrag 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.
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 10:46:14
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)
Titel: Re: arbeitszeit berechnen
Beitrag von: comet am 09.05.05 - 10:47:51
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
Titel: Re: arbeitszeit berechnen
Beitrag von: umi am 09.05.05 - 10:54:21
Ist die Pause ein Zeit, ( 30min ) oder eine Zeitspanne ( 12:30 - 13:30) ?

gruss

umi
Titel: Re: arbeitszeit berechnen
Beitrag von: comet am 09.05.05 - 10:55:31
format 01:00 oder 00:30 oder 00:45 z.b.
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 11:00:42
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?
Titel: Re: arbeitszeit berechnen
Beitrag von: comet am 09.05.05 - 11:06:39
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
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 11:13:45
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.

Zitat
schichten über 24 std gibt es nicht
, dann kannst Du bei negativen Ergebnissen einfach 24 Addieren!
Titel: Re: arbeitszeit berechnen
Beitrag von: comet am 09.05.05 - 11:15:56
komisch bei mir zieht er die pause trotzdem nicht ab
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 11:18:42
poste mal bitte den Code, den Du jetzt benutzt.
Titel: Re: arbeitszeit berechnen
Beitrag von: comet am 09.05.05 - 11:26:27
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)
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 11:29:55
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
Titel: Re: arbeitszeit berechnen
Beitrag von: comet am 09.05.05 - 11:35:50
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);
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 12:31:08
wie lautet die FM?

Ist Pause immer im Format 00:00 eingetragen?
Titel: Re: arbeitszeit berechnen
Beitrag von: umi am 09.05.05 - 12:49:21
RestMinAnzeige ist doch Text oder?
Was macht es dann in der _AZ_Netto formel?
Titel: Re: arbeitszeit berechnen
Beitrag von: diali am 09.05.05 - 12:49:27
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.