Ich meine nur, wenn's direkt mit den Eingaben und der Berechnung im selben Codeblock zu tun hat - warum denn nicht...VaporiZed schrieb:
...ist nur die Frage, ob das sinnvoll ist.
Berechnung Arbeitszeit?
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 51 Antworten in diesem Thema. Der letzte Beitrag () ist von MR_NMS.
-
-
@VB1963: Oh, das sollte kein Konter sein, sondern nur eine Fortsetzung, da ich damit aufzeigen wollte, dass der TE da noch einiges beachten muss, wenn er diesen Weg gehen will. Aber wie geschrieben - seine Entscheidung.
@MR_NMS: Wenn das mal nicht Extensions aus @ErfinderDesRades helper projects sind, dann weiß ich auch nicht auf Anhieb weiter. Da müssten wir wohl die betroffenen Zeilen selber sehen. Oder Du versuchst den Sinn der angemarkerten Zeilen zu verstehen und schreibst sie um. Null und NotNull klingt z.B. nach einem kurzen Ersatz fürIs Nothing
bzw.IsNot Nothing
.Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
-
MR_NMS schrieb:
das ist eine Nummer zu schwer für mich
m.E. ist es insofern einfach: Du hast nen Arbeitsbeginn, Du hast ein Arbeitsende. Beides als Date, da dort Datum+Zeit drin gespeichert werden. Dann würde ich ohne Expressions weiterarbeiten. In ne Extratabellenspalte kommt die effektive Arbeitszeit. Die rechnest Du Dir in ner Extraprozedur aus. Diese Prozedur kennt die ganzen Sonderregeln. Vielleicht sind diese Sonderregeln auch mitarbeiterabhängig. Vielleicht muss ein normaler Angestellter gewisse Pausen einhalten und leitende Angestellte können durchmachen. Vielleicht haben Schwangere Sonderregeln. Vielleicht gelten Extraregeln für den Chef. Aber zusammengefasst: effektive Arbeitszeit = Ende - Anfang - andere Abzüge. Mehr isses nicht.
btw: Ich arbeite (auch) gerade beruflich an einem Dienstplaner. Daher steck ich mitten drin. Zwar (noch?) nicht bei den rechtlichen Regelungen. Aber zumindest in der Codierung des Ganzen.Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
EdRs Code!
Das mit dem Arbeitsbeginn und Ende geht alles soweit!
Aber wie du schon erwähnt hast, sollte man die Berechnung nicht mehr im Dt durchführen!
Bei mir sieht es zur Zeit so aus:
Das ich ein Anfang der Arbeitszeit habe.
von - bis
Daraus wird zur Zeit im Dt die Arbeitszeit berechnet!
Nun ist es natürlich noch so, das der Mitarbeiter wenn er länger als 4 Stunden arbeitet eine Pause abgezogen bekommt!
Arbeitet er länger als 6 Stunden bekommt er dann erneut eine Pause abgezogen! -
Tja, wie ich es machen würde, schrieb ich bereits. Ich werde mich jetzt allerdings nicht mit EdRs Code beschäftigen, um herauszufinden, ob weitergehende rechtliche Regelungen wie einbaubar sind oder ob das überhaupt bei ihm vorgesehen ist. Da wird sich der Autor bestimmt selber dazu äußern.Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
OK!
Dann zurück auf Anfang.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MR_NMS“ ()
-
MR_NMS schrieb:
Also doch die Berechnung im DGV durchführen.
Wenn du meinst, jemand hätte das behauptet, dann ists vmtl. ein Missverständnis.
Die Daten sind im Dataset, das DGV präsentiert die nur (also Anzeige, und Änderung durch den User).
vlt. dachtest du, Vaporized hätte das gesagt, als er mit Busineslogik anfing.
Was immer er damit gemeint hat, bestimmt nicht, dass du im DGV Berechnungen durchführen sollst (was immer das auch bedeuten mag, weil in einem DGV kann man keine Berechnungen durchführen).
Ich bin auch nicht seiner Ansicht - ich siedele sehr gerne Businesslogik im Codebehind von typisierten Datasets an - warum auch nicht?
In meine Stechuhr-App habich zB eineTagRow.CalculateTimeDauers()
-Methode, mit der eine TagRow die Dauer der Arbeitsabschnitte des Tages in geeigneter Weise berechnet.
Wo soll ich das denn sonst hinschreiben - auf jeden Fall nicht in den Form-Code!
-
OK!
Die tägliche Arbeitszeit habe ich schon mal.
VB.NET-Quellcode
- Private Sub SchichtenDTDataTable_SchichtenDTRowChanged(sender As Object, e As SchichtenDTRowChangeEvent) Handles Me.SchichtenDTRowChanged
- RemoveHandler Me.SchichtenDTRowChanged, AddressOf SchichtenDTDataTable_SchichtenDTRowChanged
- e.Row.MonSum = e.Row.MonBIS - e.Row.MonVON
- AddHandler Me.SchichtenDTRowChanged, AddressOf SchichtenDTDataTable_SchichtenDTRowChanged
- End Sub
-
Nun möchte ich gerne, das eine Pause von 01:00 Stunde abgezogen wird!
Kann ich es dort auch berechnen? -
MR_NMS schrieb:
Kann ich es dort auch berechnen?
Klar kannst Du. Jetzt geht's eben los, dass Du nach Zeile#3 Deine ganzen Regelungen reinschreibst. StichwortIf
. Also z.B.: Wenn e.Row.MonSum (sicher, dass Du es bei derartigen Namen belassen willst?) > 6, dann ziehe von e.Row.MonSum zwei Stunden ab. Wenn es jedoch nur > 4 sind, dann nur eine. Und so weiter.
*Übrigens: Was mein Weg ist: Ich packe die ganzen Regelungen, die dann für die Arbeitszeitberechnung eingebracht werden, in eine Extraklasse, die sich um die Datenmanipulation kümmert. Das tDS an sich hat bei mir immer nur die Aufgabe, sich um die Datenhaltung zu kümmern. Weitergehende Logik im tDS-CodeBehind gibt es bei mir nicht. Es ist eine Entscheidung, die man treffen muss und auch konsequent einhalten sollte. Wenn man alles in die tDS-Klasse packen will, kann man das. Man sollte nur den Weg konsequent fortsetzen, für den man sich entschieden hat und nicht wild durchmischen, bis man gar keinen Durchblick mehr hat, wo welche Datenänderungen geschehen. Was besser oder schlechter ist, muss man für sich selbst rausfinden. Und ja, da gebe ich EdR absolu recht: Der Datenmanipulationscode gehört nicht in den Form-Klassen-Code.
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()
-
Danke für die Ausführliche Antwort!
Das mit den Klassen ist mir glaube ich zur Zeit noch eine Nummer zu weit!
Bei mir kommen auch nur noch die Pausen zum tragen und sonst nichts mehr.
Ein Schritt weiter bin ich jetzt schon mal.
Zumindest bekomme ich jetzt schon mal eine Pause abgezogen
VB.NET-Quellcode
- Dim Arbeitszeit As TimeSpan
- Dim Pause As TimeSpan = TimeSpan.FromMinutes(30)
- Dim Pause1 As TimeSpan = TimeSpan.FromHours(4)
- Dim Pause2 As TimeSpan = TimeSpan.FromHours(6)
- Arbeitszeit = e.Row.MonBIS - e.Row.MonVON
- If Arbeitszeit > Pause2 Then
- e.Row.MonSum = Arbeitszeit - Pause - Pause
- ElseIf Arbeitszeit > Pause1 Then
- e.Row.MonSum = Arbeitszeit - Pause
- ElseIf Arbeitszeit < Pause1 Then
- e.Row.MonSum = Arbeitszeit
- End If
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „MR_NMS“ ()
-
-
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
-
Es kommt nicht 3 Stunden raus, sondern 9h + 9h + 9h = 27h = 24h + 3h = 1 Tag und 3 Stunden.
@MR_NMS: Wenn Du keine Zeitpanne haben willst, sondern eine Stundenzahl, dann: Das ist dann aber keinTimeSpan
-Wert mehr, sondern einDouble
-Wert.
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
Stimmt!
Also wird nur falsch angezeigt
Jetzt passt es!
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MR_NMS“ ()
-
-
Derzeit erstelle ich mithilfe von VB eine entsprechende Exceltabelle. Ob die dann ausgedruckt wird oder versendet, kann der User dann selber aussuchen. Aber ich gestalte gerade das Programm um und werde dem User so ermöglichen auch Excel-unabhängige Varianten zu erzeugen, z.B. mithilfe des PrintDocument-CEs dann eine PDF erstellen. Ggf. auch mit ITextSharp, aber das kommt drauf an, was mein Kunde will. Bei ihm ist es ein Kleinbetrieb, sodass sein Schichtplan noch auf eine A4-Seite passtDieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln. -
-
Wo gibt's du die einzelnen Schichten ein!
Bin gerade noch ein wenig am grübeln, wie es am Besten ist!
Ich habe den Mitarbeiter und je 7 Tage an dem die Tagesschichten eingegeben werden müssen!
Ich habe es zum Testen erste einmal wie in den Bildern gemacht!
Ich denke, das diese Ansicht nur dafür sein sollte, um sich einen Überblick der Schichten der Mitarbeiter zu holen!
Für die Schichtplanung sollten nur die verfügten Mittarbeiter links stehen und rechts die Tagesschichten der jeweiligen Woche!
Das linke MitarbeiterDgv soll dann die Mitarbeiter anzeigen und das rechte die jeweilige Schicht der zu planenden Woche!
Wie stelle ich es an, das dass SchichtenDgv die MitarbeiterID vom MitarbeiterDgv pro Zeile mit übernimmt?
Also
ID Name ID MitarbeiterID Datum von Datum bis
1 Peter 1 1 15.04.2019 21.04.2019
2 Max1 2 2 15.04.2019 21.04.2019
-
Ähnliche Themen
-
Berechnung Arbeitszeit im Report
carwashbuxtehude - - Sonstige Problemstellungen -
Berechnung mehrerer Textboxen. Arbeitszeit
carwashbuxtehude - - Sonstige Problemstellungen
-
5 Benutzer haben hier geschrieben
- MR_NMS (26)
- VaporiZed (16)
- ErfinderDesRades (7)
- VB1963 (2)
- MichaHo (1)