Hallo Forum,
Frohe Ostern wünsche ich, habe ein kleinen Denkfehler mit meinem Code.
möchte doch in der Auswertung die Stördauer ermitteln, kriege es nicht wirklich hin, bzw. verstehe das irgendwie noch nicht. Im Code Fett markiert, da komme ich nicht weiter zu den Einträgen auch die Stördauer zu erhalten.
https://picload.org/view/daparaaw/02-04-_2018_09-36-49.png.html
wäre schön von euch zu hören
Private Function GetFreq1(ByVal week As Integer, _
year As Integer, masch As Integer) As DataTable
Dim Text As String = "Kein Stör-Ereignis"
Dim dt As DataTable = Schichtbuch
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt
Let wk As Integer = _
cal.GetWeekOfYear(row.Field(Of Date)("Eintrag"), _
Globalization.CalendarWeekRule.FirstFourDayWeek, _
DayOfWeek.Monday)
Where year = row.Field(Of Date)("Eintrag").Year _
AndAlso wk = week _
AndAlso row.Field(Of Integer)("MaschID") = masch _
AndAlso row.Field(Of String)("Eintrag-Instandhaltung") <> Text, _
Minuten as String = row.Field(Of Integer)("Stoerdauer") _
Group By art = row.Field(Of String)("Eintrag-Instandhaltung") _
Into Count()
Dim df As New DataTable
With df.Columns
.Add("Eintrag-Instandhaltung", GetType(String))
.Add("Stoerdauer", GetType(Integer))
.Add("Count", GetType(Integer))
.Add("Cum", GetType(Double))
.Add("CumPerc", GetType(Double))
End With
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Dim bs As New BindingSource With {.DataSource = df}
bs.Sort = "Count DESC"
Dim Summe As Integer
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
'Häufigkeiten kumulieren
Summe += CInt(row("Stoerdauer"))
row("Stoerdauer") = Summe
Next i
Dim sm As Integer = 0
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
'Häufigkeiten kumulieren
sm += CInt(row("Count"))
row("cum") = sm
Next i
'Kumulierte Werte in Prozentanteile umrechnen
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
row("CumPerc") = Math.Round(CInt(row("Cum")) / sm * 100, 2)
Next i
If bs.Count <> 1 Then
FirefoxH28.Text = String.Concat(bs.Count.ToString & " Eintraege" & _
"ausgewertet")
Else
FirefoxH28.Text = String.Concat(bs.Count.ToString & " Eintrag" & _
"ausgewertet")
End If |