Domino 9 und frühere Versionen > ND8: Entwicklung
Zeitberechnung mit Feldern
Akunin:
guten Morgen, ich hab da mal ne kleine Frage, hierbei gehts um eine Zeitberechnung.
Hintergrund der ganzen Sache ist ein mobiles Auftragsbuch, wo jeder seine pausen Zeiten usw. eintragen kann.
So, zum Schluss (abschluss des Auftrages soll dann die Zeit berechnet werden - die Pausenzeiten)
Nun kommt mein kleines Problem, die Gesamtzeit zuberechnen stellt kein Problem da, bei den Pausenzeiten wird das schon schwieriger, weil man ja mehrere Pausen machen könnte.
Nun hab ich mir überlegt das ich die Pausenzeit über Feld berechne. Allerdings brauch ich dafür mehr als nur ein Feld,
also im ersten Feld schau ich nach den Zeiten um so die Pausenzeit zu ermitteln (funktioniert)
im zweiten Feld will jetzt die Pausenzeiten addieren, dazu benutz ich folgende Formel
StopZ := @GetField("Rechnung1"); 'Hier wird die Zeit der Pause ausgelesen
@If(StopZ > 0; @Do( 'Wenn Pause war dann soll...
ErgZ := @GetField("Ergebnis"); 'Hier will ich die bisherige Gesamtzeit auslesen
EndZ := ErgZ + StopZ; 'nun addiere ich die neue + alte Zeit
@SetField("Ergebnis";EndZ) 'Hier soll die Gesamtzeit wieder gespeichert werden
);0) 'Wenn keine Pause war, bleibt das Feld 0
das Problem an der Sache ist aber nun, dass mein Feld "Ergebnis" nicht gesetzt wird.
Falls jemand ne Idee hat warum das so ist, wär ich für nenn Tipp dankbar.
Thomas Schulte:
Es gibt meiner Meinung nach einfachere Möglichkeiten, das was du erreichen willst zu tun, wenn du deinen Blickwinkel änderst.
Variante 1: Pausenzeiten werden nicht erfasst. Du erfasst deine Arbeitszeiten. Alles andere sind Pausen. Dann hast du zwei Multivalue Felder StartZeit und Endezeit und kannst einfach über die Differenz dieser beiden Felder deine Arbeitzeit ermitteln.
Summe(Endezeit - Startzeit)
Vorteil: Die einfachste Variante
Nachteil: klassische Personaler werden aufschreien
Variante 2: Du erfasst Start und Endezeit und deine Pausen mit Start und Ende in zwei Multivalue Feldern. Damit bist du dann Zeiterfassungs "konformer" in der herkömmlichen Denkweise. Kannst aber ebenfalls relativ einfach die Arbeitszeit in Minuten ermitteln indem du die Startzeit von der Endezeit abziehst und von der da ermittelten Differenz die Summe deiner Pausenzeiten abziehst.
((Endezeit - Startzeit)- Summe(Pauseende - Pausestart))
Vorteil: herkömmliche Art der Erfassung wie bei Zeiterfassungssystemen üblich.
Nachteil: etwas komplexer zu realisieren, da bei der Erfassung speziell der Pausen auch Prüfungen durchgeführt werden sollten, ob die Pausen noch im Bereich der Start und Endzeiten liegen.
Unter der Voraussetzung das das alles vom Typ Date/Time ist geht das ganz einfach.
Thomas Schulte:
Und hier ein Beispiel für die einfache Variante:
Akunin:
jo, so wie du es in Variante 2 beschrieben hast soll es auch ablaufen.
Aber an der Bildung der Summe der Pausenzeit scheiterts gerade bei mir, ich hab zwar die Zeit pro Pause ermittelt, aber wenn ich das Ergebniss zwischenspeichern will spielt das ganze nicht mehr mit.
Ich will ja quasi, mit der oben geschriebenen Formel ein Zwischenergebniss in einem Feld speichern, wenn der Auftrag nun abgeschlossen ist, soll es, wie du schon geschrieben hast wie folgt berechnet werden
((Endezeit - Startzeit)- Summe(Pauseende - Pausestart))
nur führt er das oben genannte SetField nur nicht aus
Thomas Schulte:
Schau dir deine Formel an. Die ist für das was du erreichen willst viel zu kompliziert.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln