developer Geschrieben 16. November 2004 Geschrieben 16. November 2004 Hallo, ich sitze hier gerade vor einem Problem, dem ich irgendwie nicht so ganz Herr werde: Ich brauche eine Funktion die mir die Anzahl an freien Stunden eines Arbeitstages zurĂŒck gibt. Klingt sofern ja eigentlich ziemlich einfach, es spielen allerdings einige Faktoren eine Rolle Arbeitszeit: z.B. von 8:00 - 17:00 Uhr Pause1: z.B. von 10:00 - 10:15 Uhr Pause2: z.B. von 12:00 - 13:00 Uhr Soweit so klar, ich habe 9h Arbeitszeit und ziehe die Pausen ab. Was ist nun aber, wenn er einen Arzttermin hat, und zwar von 8:00-11:00 Uhr. Dann dĂŒrfte ich die erste Pause ja nicht abziehen. Schön ist es auch bei Feiertagen, die mitten am Tag beginnen: z.B. Heiligabend oder wenn er seit 2 Wochen im Urlaub ist und heute Mittag wieder kommt. Irgendwie fehlt mir heute der rote Faden.
ottithefant Geschrieben 16. November 2004 Geschrieben 16. November 2004 Na mal ganz einfach nachgefragt. Werden die Anfangs- und Endzeit manuell eingegeben oder automatisiert? Ăber bedingte Verarbeitung lĂ€Ăt sich das doch ziemlich schnell lösen wĂŒrde ich sagen.
developer Geschrieben 16. November 2004 Autor Geschrieben 16. November 2004 Die Arbeitszeiten liegen in einer Datenbank. Wenn fĂŒr einen Mitarbeiter keine Arbeitszeiten angegeben sind, nimmt er die Ăffnungszeiten aus einer Ini-Datei. Die Zeiten fĂŒr Feiertage werden berechnet und auch in eine DB geschrieben. Urlaub, Krankheit, Berufsschule, also freie Zeiten, können natĂŒrlich kurzfristig eingeplant werden und liegen natĂŒrlich auch in einer DB. Dann gibts da natĂŒrlich noch andere Termine, die (wer mags glauben) auch kurzfristig in eine DB eingetragen werden können. Ich muss mir wohl ne Kanne Kaffee machen und dann ĂŒber DateDiff was basteln
Gast Geschrieben 17. November 2004 Geschrieben 17. November 2004 Gut, erfinden wir das Ran von vorne. Machen wir uns ein bool'sches Array(boolArbeitszeit) der GröĂe 540 (9*60 Minuten) und initialisieren wir es mit true. Als nĂ€chstes basteln wir uns eine Funktion die das Array und die Pausenzeit ĂŒbergeben bekommt. In dieser Funktion setzen wir diejenigen Minuten die in der Pausenzeit liegen auf false. Ausgegeben wĂŒrden dann nur die Blöcke die true enthalten (und dadurch dass die Anzahl der true-Elemente im Array zĂ€hlbar ist können wir auch die Anzahl der Arbeitsminuten/-stunden bestimmen).
CSC Geschrieben 18. November 2004 Geschrieben 18. November 2004 @LoneGunman Da mĂŒssen Pausen aber immer 60 Minuten lang sein. @developer Stehen die Pausenzeiten auch in der DB oder woanders? Oder werden manuell eingegeben?
developer Geschrieben 18. November 2004 Autor Geschrieben 18. November 2004 @LoneGunman Wir haben allerdings nicht nur einen Mitarbeiter, sonder... sagen wir mal 30 StĂŒck, 5 Mietwagen und 3 Gruppen. Meiner ANsicht nach zu unperformant. Ich habe mir was ausgedacht... Es gibt 3 verschiedene Möglichkeiten, wie 2 Termine zueinander angeordnet werden können: a) Sie ĂŒberschneiden sich nicht Sie ĂŒberschneiden sich in einem Punkt c) Sie ĂŒberschneiden sich in zwei Punkten a) [OOOOOOOO] [OOOOOOOOOO] [OOOOOOOOOOOO] [OOOOOOOOOOOO] c) [OOOOOOOOOOOOOOOOOOOOOO] [OOOOOOOO] [/code] Ich sortiere ein Zweistelliges Array [n,1] nach dem Ende der Termine und fange mit dem spĂ€testen Termin an. Bei a wĂŒrde sich die Pausenzeit einfach berechnen lassen: T=Termin ; A=Anfang ; E=Ende T2E-T2A + T1E-T1A Bei b wĂ€re das T2E-T1E + T1E-T1A oder T2E-T2A - T1E-T2A + T1E-T1A Bei c wĂ€re das T1E-T1A
dimikar Geschrieben 21. November 2004 Geschrieben 21. November 2004 bei Punkt b wÀre die Berechnung Àhnlich einfach wie bei Punkt c T2E-T1A oder? Gruà Dimikar
developer Geschrieben 22. November 2004 Autor Geschrieben 22. November 2004 Eigentlich schon, da hast du Recht. Es könnte allerdings zu Problemen kommen, wenn mehr als 2 Termine auftreten. Daher muss ich das mit c auch nochmal durchdenken... [ooooooooooooooooooooooooooo] [oooooooooooooooooooooooooooo] [oooooooooooooooooooooooooooo] [ooooooo] So könnte das ja auch aussehen...
Erik_hfr Geschrieben 22. November 2004 Geschrieben 22. November 2004 Nun kan ich als VB-AnfĂ€nger nicht wirklich produktiv mitmischen, jedoch stellt sich mir die Frage, wer solche Termine vergibt? Theoretisch ist deine zuletzt genannte Konstellation mehrerer Termine möglich, praktisch hingegen wird wohl niemand Termine auf solch eine Art und Weise vergeben. Fall a) bis c) erscheinen da schon weitaus realistischer. Und im Endeffekt bist du bzw. jeder Mensch nur in einem Termin vertreten. Man kann nicht in einer Besprechung sein und zeitgleich zum kunden fahren (auch wenn man es manchmal können mĂŒsste )
developer Geschrieben 22. November 2004 Autor Geschrieben 22. November 2004 Auf einer Seite ist das natĂŒrlich begrĂŒndet. Es geht allerdings hier nicht nur um "Termine" sondern auch um freie Zeiten wie z.B. Urlaub, ĂBerstunden die abgefeiert werden oder PAusen. Es ging mir ja darum, wie viel Arbeitszeit fĂŒr den Mitarbeiter noch verplant werden kann. Es wĂ€re schon realistisch, wenn du an einem Tag zum Zahnarzt gehst (z.B. 9-14 Uhr), du wĂ€rend dieser Zeit eine FrĂŒhstĂŒckspause hĂ€ttest (z.B. 10:00 - 10:15), von 12:00 bis 12:45 Uhr ist Mittagspause und du hattest ab 13 Uhr Urlaub eingetragen (weil du damals noch nicht wusstest, dass du zum Arzt musst). Da sollten dann also 0 Arbeitsstunden bei rauskommen und keine negative Arbeitszeiten. Das wĂŒrde ja passieren, wenn du alle Pausen addieren und sie von der Abeitszeit abziehen wĂŒrdest.
Erik_hfr Geschrieben 23. November 2004 Geschrieben 23. November 2004 Aber im Endeffekt ist deine letzte Beschreibung auch eine Ăberlagerung von zwei Terminebenen: unten die normalen Termine, die vom Zahnarzt ĂŒberlagert werden... [oooooooooooooooooooooooo-ZAHNARZT-oooooooooooooooooooooooo] [oo-ARBEIT-oo][oo-PAUSE-oo][oo-ARBEIT-oo][ooo-URLAUB-ooooooooooooooo] Selbst wenn zwischen der untersten und der obersten "Ebene" sich noch eine befindet, meinetwegen von 10:00 - 12:30 Uhr, dann hat das ja keine Auswirkungen auf dein Vorhaben. Denn Zahnarzt hat eine höhere PrioritĂ€t (meistens). Verstehst du? Is' aber auch doof zu erklĂ€ren... Nachtrag: SelbstverstĂ€ndlich musst du deinem kleinem Programm dann auch die PrioritĂ€ten fĂŒr die entsprechenden Termine zuweisen. SchlieĂlich willst du ja, wie du schon meintest, fĂŒr Arztbesuche oder Urlaub keine Arbeitszeit abgezogen bekommen.
developer Geschrieben 23. November 2004 Autor Geschrieben 23. November 2004 Nochmal kurz: Es geht mir ja nicht um irgendwelche PrioritÀten. Es ist auch egal, ob der Termin erst um 9 oder 9:30 Uhr ist. Es können n Ebenen existieren. Letztendlich will ich "nur" wissen, wie lange die Person am gleichen Tag noch arbeiten kann. Ob das von seinem Stundenkonto abgezogen wird oder nicht, ist total irelevant.
Empfohlene BeitrÀge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto fĂŒr unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden