Hallo zusammen,
ich bin mir sicher, ich stelle mir selbst ein Bein.
Im Folgenden Code wird eine DataTable erstellt und die Mitarbeiternamen anhand der Pausenzeiten verteilt.
Die Pausen werden anhand der Arbeitszeiten vergeben und sollen nun auf den Tagesplan verteilt werden.
Leider scheint der Counter der die Anzahl der Pausen für die ausgewählte Zeit ermitteln soll nie hochgezählt (Zeile 44)
Allerdings wird die Zeile erreicht und die Zeile 43 wird auch korrekt ausgeführt.
Am ende kommt somit eine Verteilung raus wo anstelle von ca. 150 Mitarbeitern nur ca 10 Mitarbeiter auf die Pausenzeiten verteilt sind da immer nur der letzte Eintrag angezeigt wird.
So sieht es aus:
So soll es aussehen:
Hier ist der Verwendete Code:
Spoiler anzeigen
Function ClearSchichtplan:
Spoiler anzeigen
ich bin mir sicher, ich stelle mir selbst ein Bein.
Im Folgenden Code wird eine DataTable erstellt und die Mitarbeiternamen anhand der Pausenzeiten verteilt.
Die Pausen werden anhand der Arbeitszeiten vergeben und sollen nun auf den Tagesplan verteilt werden.
Leider scheint der Counter der die Anzahl der Pausen für die ausgewählte Zeit ermitteln soll nie hochgezählt (Zeile 44)
Allerdings wird die Zeile erreicht und die Zeile 43 wird auch korrekt ausgeführt.
Am ende kommt somit eine Verteilung raus wo anstelle von ca. 150 Mitarbeitern nur ca 10 Mitarbeiter auf die Pausenzeiten verteilt sind da immer nur der letzte Eintrag angezeigt wird.
So sieht es aus:
So soll es aussehen:
Hier ist der Verwendete Code:
VB.NET-Quellcode
- Private Function PausenVerteilen2() As DataTable
- Dim MoeglicherPausenSlot As Integer = 0
- GlobSchichtplan = ClearSchichtplan() 'Variable vom Typ DataTable
- GlobMAListe = MAListeErmitteln() 'Variable vom Typ List(of String)
- For Each _Mitarbeiter As Mitarbeiter In GlobMAListe 'Mitarbeiterklasse
- Dim VorherigePausenzeit As New Date
- For Each _Pause As Pause In _Mitarbeiter.Pausen 'Pause ist eine Klasse
- GlobSchichtplan.AcceptChanges()
- Dim _Counter As Integer = -1
- Dim _RowNumber As Integer = 0
- Dim _PausenZeit As New DateTime
- Dim Treffer As Boolean = False
- _Pause.FruehstePausenZeit = GlobFruestePause
- _Pause.SpaetestePausenZeit = GlobSpaetestePause
- _Pause.Startzeit = If(_Pause.Nummer = 1, _Mitarbeiter.AzVon, VorherigePausenzeit)
- While Not Treffer
- _Counter += 1
- For Each _row As DataRow In GlobSchichtplan.Rows
- If Convert.ToDateTime(_row.Item("Uhrzeit")) >= _Pause.Pausenzeit AndAlso
- Convert.ToDateTime(_row.Item("Uhrzeit")) <= _Pause.Pausenzeit.AddMinutes(180) Then
- If Convert.ToInt16(_row.Item("Counter")) < _Counter OrElse
- (Convert.ToInt16(_row.Item("Counter")) = _Counter AndAlso
- Treffer = False) Then
- Debug.Print(Convert.ToInt16(_row.Item("Counter")).ToString)
- _Counter = Convert.ToInt16(_row.Item("Counter")) '<---------------------- Hier ist das Problem: Der Wert ist immer 0
- _RowNumber = Convert.ToInt16(_row.Item("RowNr"))
- _PausenZeit = Convert.ToDateTime(_row.Item("Uhrzeit"))
- Treffer = True
- End If
- End If
- Next
- End While
- If GlobSchichtplan.Columns.Count < _Counter + 5 Then
- GlobSchichtplan.Columns.Add("Pause_" & _Counter.ToString("00"), GetType(String))
- End If
- While _Pause.Pausenzeit < _PausenZeit
- Pauseverschieben(_Pause, _Mitarbeiter.AzBis.AddMinutes(-90))
- End While
- GlobSchichtplan.Rows(_RowNumber).Item("Pause_" & _Counter.ToString("00")) = _Mitarbeiter.Name '<-------------Der Name wird merkwürdigerweise korrekt gespeichert
- GlobSchichtplan.Rows(_RowNumber).Item("Counter") = _Counter + 1 '<---------------------- Dieser Teil funktioniert scheinbar nicht.
- Next
- Next
- PausenVerteilen2 = GlobSchichtplan
- End Function
Function ClearSchichtplan:
VB.NET-Quellcode
- Private Function ClearSchichtplan() As DataTable
- Dim Uhrzeit As Date = GlobFruestePause
- ClearSchichtplan = New DataTable
- Dim RowNr As Integer = 1
- With ClearSchichtplan
- .Columns.Add("RowNr", GetType(Integer))
- .Columns.Add("Counter", GetType(Integer))
- .Columns.Add("Datum", GetType(Date))
- .Columns.Add("Uhrzeit", GetType(Date))
- While Uhrzeit <= GlobSpaetestePause
- .Rows.Add(RowNr, 0, Uhrzeit, Uhrzeit)
- RowNr += 1
- Uhrzeit = Uhrzeit.AddMinutes(15)
- End While
- End With
- End Function
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."