| |
VB.NET - FortgeschritteneStördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 21.04.17 06:34 |
| Hallo Manfred X,
ich glaube wir müssen zunächst den Code analysieren um das evtl. zu optimieren.
also in der typisierten Tabelle Störungen werden von mehreren Maschinen Ereignisse (Störungen) dokumentiert. Dabei wird eine Störung auf eine Störungsart gebucht. Nun möchte ich wissen welche Störungsarten aum häufigsten pro Woche Probleme bereiten, also wo muss man intensiver analysieren um die auftretenden Störungen zu reduzieren.
ich bin zunächst mal so rangegangen:
Private Sub SB_Stoerdauer_Maschine_fill()
'DatagridView leeren DGV ist nicht gebunden
dgv_SB_Stoerdauer_Maschine.Rows.Clear()
'Abfrage typisierte Datatable Stoerungen
Dim Abfrage = From Eintrag In TPMDB.Stoerungen
Where Eintrag.RowState <> DataRowState.Deleted
Order By Eintrag.OrtderStörung
Group By Art = Eintrag.MaschinenID Into UGruppe = Group
Dim OrtderStoerung As String
Dim ArtderStoerung As String
Dim Stoerdauer As Double
Dim D_von, D_bis As Date
Dim ue As StoerungenRow
For Each Reihe In Abfrage
ue = Reihe.UGruppe.First
D_von = (From drv In Reihe.UGruppe Select drv.Eintrag).Min
D_bis = (From drv In Reihe.UGruppe Select drv.Eintrag).Max
Dim rowMaschine = TPMDB.Stoerungen.First(Function(f) f.ID = _
ue.MaschinenID)
If Not rowMaschine Is Nothing Then
OrtderStoerung = rowMaschine.OrtderStörung
ArtderStoerung = rowMaschine.ArtderStörung
Stoerdauer = Reihe.UGruppe.Sum(Function(f) f.Stoerdauer)
dgv_SB_Stoerdauer_Maschine.Rows.Add({ue.MaschinenID, _
ue.OrtderStörung, Reihe.UGruppe.Count, Stoerdauer, D_von, _
D_bis})
End If
Next
End Sub im DGV erhalte ich nun das Ergebniss (gruppiert nach Maschinen)
Ort der Störung|Anzahl Ereignisse|Stördauer (MIN)|Datum von|Datum bis
ich möchte ja zunächst mal pro Woche oder Monat die Ereignisse je Maschine ermitteln.
wenn das klappt könnte man Schritt-2 angehen ein Pareto zeichnen ? Diagramm zeichnen ? | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 21.04.17 08:03 |
| Hallo!
Themen richten sich im Forum an die gesamte Community, nicht an Einzelne!
Gefilterte Abfrage-Ergebnisse gehören nicht in ein Grid.
Das Control dient nur zur Anzeige der Daten.
Als temporäre Datenquelle für statistische Datenaufarbeitungen sollte
eine Datatable verwendet werden.
Charts können direkt an die Datenspalten dieser Table gebunden werden.
Eventuell kann auch direkt an eine durch LINQ erstellte Enumerable gebunden
werden.
In Deinen Ergebnis-Sätzen wird jeweils ein Zeitintervall von-bis verzeichnet.
Diese Zeitintervalle lassen sich vermutlich nicht einzelnen Kalender-Wochen
eindeutig zuordnen.
Sollte die Linq-Abfrage nicht (so oder ähnlich) hierarchisch gestaffelt sein:
-> Auswahl (Gruppierung) aller Datensätze (Störungen) innerhalb Kalender-Wochen
---> gruppiert (oder gefiltert) nach Maschine
-----> gruppiert nach Art der Störung
-------> Count (Zahl der Ereignisse)
Dabei müssen ggf. noch Datensätze mit fehlende Angaben in einzelnen Feldern
aussortiert oder geeignet behandelt werden, um aussagekräftige Statistiken
zu erhalten.
Wie dabei Angaben zum Ort der Störung und zur Dauer der Störung einzubeziehen
sind, kann ich nicht beurteilen (Stacked-Bars?).
Ein Pareto-Chart ist gewöhnlich eine Kombination aus Bar (Frequenz) und
Line (kumulierte Frequenz).
Diese Kombination sollte das Chart-Control leisten können (Series -> Charttyp).
Ich schlage die Durchführung einer Clusteranalyse aller Störungs-Datzensätze vor.
Dadurch können Häufungen von Störungs-Konstellationen ermittelt werden.
Beitrag wurde zuletzt am 21.04.17 um 08:26:19 editiert. | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 21.04.17 08:48 |
| Zitat: | | Wie dabei Angaben zum Ort der Störung und zur Dauer der Störung einzubeziehen
sind, kann ich nicht beurteilen (Stacked-Bars?). | |
stacked-bars denke ich
Zitat: | |
Ich schlage die Durchführung einer Clusteranalyse aller Störungs-Datzensätze vor.
Dadurch können Häufungen von Störungs-Konstellationen ermittelt werden.
| |
das klingt alles ziemlich Gut deine Tipps, doch da bräuchte ich eine Menge Hilfe zu
so umfangreich habe ich es noch nicht gemacht. Ich hätte nun schon das Problem die Linq Abfrage korrekt
zu schreiben, das wäre ja evtl. der erste Schritt dazu? | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 21.04.17 12:29 |
| Hallo!
Ausgehend von folgender untypisierter Datatable:
With dt.Columns
.Add("ID", GetType(Integer))
.Add("Störung Zeit", GetType(Date))
.Add("Störung Ort", GetType(String))
.Add("Störung Dauer", GetType(Integer))
.Add("Störung Art", GetType(Integer))
.Add("Maschine ID", GetType(Integer))
End With ... sähe eine auf LINQ basierte Methode zur Bestimmung
der Häufigkeit der verschiedenen Störungs-Arten
pro Maschine und pro Woche etwa so aus (Rückgabe einer Datatable):
Private Function GetFreq1(ByVal week As Integer, _
year As Integer, masch As Integer) As DataTable
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)("Störung Zeit"), _
Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday)
Where year = row.Field(Of Date)("Störung Zeit").Year _
AndAlso wk = week _
AndAlso row.Field(Of Integer)("Maschine ID") = masch
Group By art = row.Field(Of Integer)("Störung Art") Into Count()
Dim df As New DataTable
df.Columns.Add("Störung Art") : df.Columns.Add("Count")
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Return df
End Function Verfahren zur Clusteranalyse sind in jedem Statistik-Programmpaket enthalten. | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 21.04.17 16:48 |
| möchte mir da erst mal eine Testumgebung schaffen.
Doch ich komme noch nicht mit deinem Tipp klar.
'Columns Bezeichnung aus meiner typisierten Datatable 'Stoerungen'
With dt.Columns
.Add("ID", GetType(Integer))
.Add("Eintrag", GetType(Date))
.Add("OrtderStöerung", GetType(String))
.Add("Stördauer", GetType(Integer))
.Add("ArtderStörung", GetType(String))
.Add("MaschinenID", GetType(Integer))
End With wie geht es weiter? mit der Funktion die verstehe ich nicht ganz
Private Function GetFreq1(ByVal week As Integer, _
year As Integer, masch As Integer) As DataTable
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.FirstDay, DayOfWeek.Monday)
Where year = row.Field(Of Date)("Eintrag").Year _
AndAlso wk = week _
AndAlso row.Field(Of Integer)("MaschinenID") = masch
Group By art = row.Field(Of Integer)("ArtderStörung") Into Count()
Dim df As New DataTable
df.Columns.Add("ArtderStörung") : df.Columns.Add("Count")
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Return df
End Function würde mir das gerne als Ergebnis anschauen können, evtl. denke ich gerade zu kompliziert. | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 21.04.17 17:34 |
| Wenn Du die Bezeichnungen und Spalten-Datentypen aus Deiner
Tabelle korrekt in den Code eingebaut hast -
wie schon mal erläutert ....
Dim dt as datatable = Deine typisierte Datatable
Die Aufruf-Parameter der Funktion GetFreq1 :
gewünschtes Jahr, gewünschte Kalenderwoche (1-52),
gewünschte Maschinen-ID | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 21.04.17 20:33 |
| Hey
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles _
Button1.Click
GetFreq1(3, 2017, 2)
End Sub
Private Function GetFreq1(ByVal week As Integer, _
year As Integer, masch As Integer) As DataTable
Dim dt As DataTable = TPMDB.Stoerungen
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.FirstDay, DayOfWeek.Monday)
Where year = row.Field(Of Date)("Eintrag").Year _
AndAlso wk = week _
AndAlso row.Field(Of Integer)("MaschinenID") = masch
Group By art = row.Field(Of String)("ArtderStörung") Into Count()
Dim df As New DataTable
df.Columns.Add("ArtderStörung") : df.Columns.Add("Count")
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"
DataGridView1.DataSource = bs
Return df
End Function ich finde das schon erheblich plausibler als mein Coderei
habe es mal in eine DGV anzeigen lassen, Ergebnis: OK
ArtderStörung | Count |
______________________
Mechanik 5
EC-Schrauber 1
SPS 1
Roboter 1
fehlt mir noch die Stördauer (Minuten) Spalte
aus der Liste könnte man auch ein Pareto - Zeichnen
Count = absolut nun müsste man es kummulieren und dann prozentaler Anteil
verstehst du ihr was ich meine, wie könte man das nun berechnen und in ein schickes Pareto- zeichnen
für einen Bericht | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 21.04.17 21:51 |
| Ich verstehe nicht, wie die Dauer der Störung in eine
Häufigkeitsverteilung einzuordnen ist.
Eventuell könnte man eine Grenz-Dauer angeben und
die Störungs-Häufigkeiten bestimmen, bei denen diese Grenz-
Dauer bei Störungen unter- oder überschritten worden ist.
Für einen Pareto-Chart benötist du vermutlich folgende
Wochen-Tabelle der Störungen bei einer bestimmten Maschine:
Private Function GetErrorsInWeeks(year As Integer, masch As Integer, _
mininterval As Integer) As DataTable
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt.AsEnumerable
Where IsFullRow(row) AndAlso _
row.Field(Of Date)("Störung Zeit").Year = year
Let wk As Integer = _
cal.GetWeekOfYear(row.Field(Of Date)("Störung Zeit"), _
Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday), _
art As String = row.Field(Of String)("Störung Art"), _
minint As Boolean = _
row.Field(Of Integer)("Störung Dauer") >= mininterval
Group By wk, art, minint Into Count()
Order By wk, art, minint
Dim df As New DataTable
With df.Columns
.Add("Woche in " & year.ToString)
.Add("Störung Art")
.Add(mininterval.ToString & " Min. überschritten?", GetType(Boolean))
.Add("Häufigkeit", GetType(Integer))
End With
For Each el In q
df.Rows.Add(el.wk, el.art, el.minint, el.Count)
Next el
Return df
End Function
Private Function IsFullRow(row As DataRow) As Boolean
'Filtert Zeilen mit fehlenden Werten
For i As Integer = 0 To row.ItemArray.Length - 1
If IsDBNull(row(i)) Then Return False
Next i
Return True
End Function
Beitrag wurde zuletzt am 21.04.17 um 22:18:13 editiert. | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 22.04.17 15:45 |
| versuche gerade das in mein Projekt einzubinden, leider wird da die Maschine nicht
beim Aufruf der GeterrorsInWeeks()
und ich die Maschine ändere ändern sich die Daten nicht bzw. sind immer gleich also wird die Maschine nicht gewertet? | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 22.04.17 15:56 |
| Sorry, habe die Funktion angepasst es fehlte die Maschine
AndAlso _
row.Field(Of Integer)("MaschinenID") = masch Danke! nun würde ich gerne wissen wollen was der mininterval bedeutet?
Private Function GetErrorsInWeeks(year As Integer, masch As Integer, _
mininterval As Integer) As DataTable
Dim dt As DataTable = TPMDB.Stoerungen
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt.AsEnumerable
Where IsFullRow(row) AndAlso _
row.Field(Of Date)("Eintrag").Year = year AndAlso _
row.Field(Of Integer)("MaschinenID") = masch
Let wk As Integer = _
cal.GetWeekOfYear(row.Field(Of Date)("Eintrag"), _
Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday), _
art As String = row.Field(Of String)("ArtderStörung"), _
minint As Boolean = _
row.Field(Of Integer)("Stoerdauer") >= mininterval
Group By wk, art, minint Into Count()
Order By wk, art, minint
Dim df As New DataTable
With df.Columns
.Add("Woche in " & year.ToString)
.Add("Art der Störung")
.Add(mininterval.ToString & " Min. überschritten?", GetType( _
Boolean))
.Add("Häufigkeit", GetType(Integer))
End With | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 22.04.17 16:50 |
| Wie beschrieben ....
Eventuell könnte man eine Grenz-Dauer angeben und
die Störungs-Häufigkeiten bestimmen, bei denen diese Grenz-
Dauer bei Störungen unter- oder überschritten worden ist.
Der Parameter "MinInterval" gibt die Störungsdauer-Dauer an,
bei der die Sätze (Häufigkeit) gesplittet werden:
Anzahl der Sätze mit kürzerer Störungsdauer gegen
Anzahl der Sätze mit längerer Störungsdauer
- gegliedert nach Kalenderwochen im Jahr und Störungsart
(jeweils für ein Jahr und - jetzt - eine Maschine). | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 22.04.17 17:12 |
| Super Danke für die Erklärung habe es soweit verstanden macht ja Sinn somit kann man über den Parameter
die Störungen herausfiltern und näher untersuchen um sie noch weiter zu drücken.
wie könnte nun das Diagramm aussehen? Ein Ergebnis welches ich einer DGV zuweise sieht so aus
jetzt zu einer gewählten Maschine:
Woche
in 2017 | ArtderStörung | 10 Min
überschritten? | Häufigkeit
3 Mechanik nein 2
3 SPS nein 1
3 SPS ja 1
4 Mechanik nein 1
4 Mechanik ja 4 mit dem Zeichnen mit der überschreitungs Linie habe ich noch nicht wirklich verstanden wie es geht
ist auch nicht so mein Thema Charts zu erstellen
wie soll das in ein Chart dargestellt werden? sieht irgendwie doppelt gemoppelt aus oder? | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 22.04.17 17:23 |
| In der Tabelle gibt es keine doppelten Einträge!
Jede Zeile steht - wie oben erläutert - für eine
Konstellation von Bedingungen und der entsprechenden
Störungs-Häufigkeit.
Zeile 1: in Woche 3 sind 2 Mechanik-Störungen aufgetreten,
die beide in weniger als 10 Minuten behoben waren.
Welche Information Du in Diagramm-Form darstellen willst,
kann ich nicht beurteilen.
Sind die Häufigkeiten allerdings so gering (1-4),
lohnt sich ein Chart eigentlich nicht. | |
Re: Stördaten Ereignisse auswerten | | | Autor: effeff | Datum: 22.04.17 18:06 |
| Wenn Du sowieso schon typisiert arbeitest, erstelle bei Deinen Datenquellen eine neue Abfrage, aus welcher Du die entsprechende DataTable zur Anzeige per DataGridView generierst...
EALA FREYA FRESENA | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 22.04.17 18:36 |
| Zitat: | | erstelle bei Deinen Datenquellen eine neue Abfrage, aus welcher Du die entsprechende DataTable zur Anzeige per DataGridView generierst... | |
verstehe nicht was du mir sagen möchtest was abfragen? wie? | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 23.04.17 12:58 |
| OK habe da noch eine spezielle Frage zum Thema Stoerdatenanalyse.
wenn kein Chart hier Sinnvoll ist, wie wäre es mit eine Information für den User welche Einträge da überschritten sind. Also entweder kann der User eine Auflistung der betroffenden Einträge in eine DGV
zusammengestellt bekommen, oder evtl. den Datensatz per doppelklick anspringen. Geht das? oder ist das auch Sinnlos für weitere analysen?
ich habe es nun so in meiner Anwendung eingebaut, passt soweit. Die DGV gefällt mir persönlich noch nicht wirklich ist noch unschön weiß gerade nicht wie man die aufhübschen könnte.
das ist der komplette Auswerte Prozess:
Private Sub btn_Stoerdaten_Auswerten_Click(sender As Object, e As EventArgs) _
Handles btn_Stoerdaten_Auswerten.Click
If BS_SB_Stoerungen_TypRow Is Nothing Then Return
'Variabeln
Dim Grenzwert As Integer = CInt(nud_Ziel_Stoerdauer.Value)
Dim year_selected As Integer = CInt(cboYear.SelectedItem)
Dim masch_selected As Integer = CInt(cbx_Maschine.SelectedValue)
'Funktion aufrufen
GetErrorsInWeeks(year_selected, masch_selected, Grenzwert)
End Sub
Private Function GetErrorsInWeeks(year As Integer, masch As Integer, _
mininterval As Integer) As DataTable
Dim dt As DataTable = TPMDB.Stoerungen
Dim cal As Globalization.Calendar = _
Globalization.CultureInfo.CurrentCulture.Calendar
Dim q = From row As DataRow In dt.AsEnumerable
Where IsFullRow(row) AndAlso _
row.Field(Of Date)("Eintrag").Year = year AndAlso _
row.Field(Of Integer)("MaschinenID") = masch
Let wk As Integer = _
cal.GetWeekOfYear(row.Field(Of Date)("Eintrag"), _
Globalization.CalendarWeekRule.FirstDay, DayOfWeek.Monday), _
art As String = row.Field(Of String)("ArtderStörung"), _
minint As Boolean = _
row.Field(Of Integer)("Stoerdauer") >= mininterval
Group By wk, art, minint Into Count()
Order By wk, art, minint
Dim df As New DataTable
With df.Columns
.Add("Woche in " & year.ToString)
.Add("Art der Störung")
.Add(mininterval.ToString & " Min. überschritten?", GetType( _
Boolean))
.Add("Häufigkeit", GetType(Integer))
End With
For Each el In q
df.Rows.Add(el.wk, el.art, el.minint, el.Count)
Next el
Dim bs As New BindingSource With {.DataSource = df}
If bs.Count = 0 Then
lbl_Stoerdatenanalyse_Info.Text = String.Concat(bs.Count & " keine" & _
"Einträge gefunden").ToString
Else
lbl_Stoerdatenanalyse_Info.Text = String.Concat(bs.Count & "" & _
"Einträge gefunden").ToString
End If
'Daten in der DGV anzeigen
dgv_Stoerdatenanalyse_Grenzwert.DataSource = bs
'Ende Auswertung
Return df
End Function
Private Function IsFullRow(row As DataRow) As Boolean
'Filtert Zeilen mit fehlenden Werten
For i As Integer = 0 To row.ItemArray.Length - 1
If IsDBNull(row(i)) Then Return False
Next i
Return True
End Function PS Manfred X, kannst du mir noch kurz diese Funktion erklären?
macht ja sinn das ich die verstehe. Oder ist es Richtig das die Funktion prüft ob es in der DB Tabelle fehlende Werte gibt?
Private Function IsFullRow(row As DataRow) As Boolean
'Filtert Zeilen mit fehlenden Werten
For i As Integer = 0 To row.ItemArray.Length - 1
If IsDBNull(row(i)) Then Return False
Next i
Return True
End Function | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 23.04.17 14:45 |
| Welche Auswertungen sinnvoll sind,
hängt von der Zielsetzung ab (Anlagen-Optimierung,
Vergleichs-Analysen, Instandsetzungs-Planung, ...)
Und von der ziel-bezogenen Bedeutung der gespeicherten Daten:
Sind alle Störungsarten als gleich bedeutsam zu gewichten?
Sind kurzfristig behebbare Störungen (kurze Dauer) überhaupt relevant?
Gibt es zeitliche Schwankungen der Häufigkeit von Störungen
(z.B. Hinweis auf Verschleiß bzw. Überlastung) oder spielt der
Zeitpunkt keine Rolle?
Sind noch weitere Daten einzubeziehen (Auslastung, Alter, Wartungs-
Zeitpunkte, verantwortlicher Mitarbeiter bei Bedienung oder Einstellung,
usw.)?
Zu "IsFullRow":
Die boolsche Funktion sortiert alle Datensätze komplett aus,
in denen mindestens ein Feld den Wert DBNull.Value aufweist.
Sinnvoll ist diese Strategie bei Erstellung von statistischen
Auswertungen, wenn max. ca. 5% der Sätze betroffen sind.
Beachte, daß im Forum nur allgemeine Hinweise gegeben werden können.
Wie in Deinem konkreten Anwendungsfall vorzugehen ist, kann nicht
beurteilt werden. | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 23.04.17 15:35 |
| Danke für die ausführlichen Hinweise, da muss man noch mal in sich gehen.
wünsch euch eine Gute Zeit | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 25.04.17 06:11 |
| Hallo zusammen,
Rückgabe KW falsch
mittels der Funktion (Manfred X) ruf ich meine Daten ab
Jahr 2017
KW 3
Rückgabe Soll 16.01.2017 - 22.01.2017 wenn KW 3 in DT vorhanden müsste das Ergebnis aus 16 - 22.01.2017 sein Richtig?
Rückgabe ist aber: 10.01.2017 - 15.01.2017 also alle Datumse aus der DT aber KW 2?? nicht die eingestellte KW 3
warum ist das so?
gebe ich KW 4 ein gibt die Funktion die Daten KW3 aus also 16.01.2017 - 22.01.2017 wenn vorhanden
Private Function GetFreq1(ByVal week As Integer, _
year As Integer, masch As Integer) As DataTable
Dim dt As DataTable = TPMDB.Stoerungen
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.FirstDay, DayOfWeek.Monday)
Where year = row.Field(Of Date)("Eintrag").Year _
AndAlso wk = week _
AndAlso row.Field(Of Integer)("MaschinenID") = masch
Group By art = row.Field(Of String)("ArtderStörung") Into Count()
Dim df As New DataTable
df.Columns.Add("ArtderStörung") : df.Columns.Add("Count")
For Each el In q
df.Rows.Add(el.art, el.Count)
Next el
Dim bs As New BindingSource With {.DataSource = df}
Return df
End Function | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 25.04.17 08:17 |
| Hallo!
Es gibt keine eindeutige Festlegung (im Kalender), wie die Kalenderwochen
innerhalb eines Jahres zu zählen sind (Von wann bis wann läuft Woche 1?)
Schau Dir mal die Dokumentation von "GetWeekOfYear" an.
Der Parameter "Calendarweekrule" ermöglicht die Anpassung der Zählweise.
Du mußt ausprobieren, wie die von Dir erwartete Zählweise und die
Net-Methode zu koordinieren sind.
Beitrag wurde zuletzt am 25.04.17 um 08:26:09 editiert. | |
Re: Stördaten Ereignisse auswerten | | | Autor: ERBRU | Datum: 25.04.17 15:14 |
| Danke Manfred X,
so passt es bei mir
CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday
nur warum so habe ich noch nicht verstanden?
kannste mir das näher erklären | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 25.04.17 16:14 |
| Die Wochenzählung durch diese Methode ist erklärt
in der [U]Dokumentation zur CalendarWeekRule-Enumeration[/U].
KURZ:
"FirstDay" zählt als Woche 1, die Woche, in der der 1. Januar liegt.
"FirstWeekday" zählt als Woche 1, die erste Woche, die völlig im neuen Jahr liegt
"FirstFourDayWeek" zählt als Woche 1, die Woche, in der der 1. Januar liegt,
wenn mindestens vier Tage dieser Woche im neuen Jahr liegen - sonst die Folgewoche.
Dabei wird als Wochenbeginn der Wochentag verwendet, der als "FirstDayOfWeek"-Parameter
angegeben worden ist. | |
Re: Stördaten Ereignisse auswerten | | | Autor: Manfred X | Datum: 26.04.17 07:09 |
| Hallo!
Die Festlegung der Wochenzählung durch ISO 8601 soll zwar als
internationaler Standard gelten, tatsächlich werden - insbesondere
außerhalb der EU - lokal die kulturellen Gewohnheiten vielfach
beibehalten.
Bei Erstellung internationaler Anwendungen sollte man prüfen,
ob eine "Woche" nicht besser eindeutig über die Angabe des Kalender-
Datums eines enthaltenen Wochentages (z.B. Montag) zu definieren wäre. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|