vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Stö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 ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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).
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stördaten Ereignisse auswerten 
Autor: Franki
Datum: 26.04.17 03:24

Und als Ergänzung noch:

https://blogs.msdn.microsoft.com/shawnste/2006/01/24/iso-8601-week-of-year-format-in-microsoft-net/

bzw. auch:

http://www.vbarchiv.net/tipps/details.php?id=2447

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel