Hallo Manfred X,
schön das du dich hier einschaltest.
Danke
erreichen möchte ich eben, das ich in der Auswertung "Labels" befülle die zum einen
Anzahl wiedergeben, und die Stoerdauer in Summe macht ja Sinn zu wissen wieviele Ereignisse und die Stoerdauer Summe zu bilden?
bei mir jetzt Spalte 'Stoerdauer' gehört nicht zur Tabelle
die Anzahl stimmt auch nicht? in diesem Bild sind z Zeilen richtig, aber Ereignisse hätten 8 gezählt werden müssen, da es ja das eine oder andere öfters vorkommt.
https://picload.org/view/dapaaacw/02-04-_2018_11-53-17.png.html
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)
Let Minuten = row.Field(Of Integer)("Stoerdauer")
Let Instandhaltung = row.Field(Of String)("Eintrag-Instandhaltung")
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
Group By art = Instandhaltung, Minuten Into Count()
'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 _
' 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("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 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
Dim sum As Integer = 0
For i As Integer = 0 To bs.Count - 1
Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
'Stoerdauer
sum += CInt(row("Stoerdauer"))
Next i
If bs.Count <> 1 Then
FirefoxH28.Text = String.Concat(bs.Count.ToString & " Eintraege" & _
"ausgewertet")
FirefoxH29.Text = String.Concat(sum.ToString & " Minuten")
Else
FirefoxH28.Text = String.Concat(bs.Count.ToString & " Eintrag" & _
"ausgewertet")
FirefoxH29.Text = String.Concat(sum.ToString & " Minute")
End If |