vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 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
Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 21.05.17 12:26

 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)("MaschinenID") = masch
              Group By art = row.Field(Of String)("Station") Into Count()
 
        Dim df As New DataTable
        df.Columns.Add("Station") : 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"
mittels Codeschnipsel wird die Häufigkeit einer Maschine Station oder Störungsart ermittelt
aus einer bestimmten Woche. Nun möchte ich eine "Trendanalyse aus 4 Wochen ermitteln

Ergebnis:

Woche 3,4,5,6 3,4,5,6
als Säulendiagramm
Station1 Station4

im prinzip die Häufigkeit Stationen einer Maschine aus den letzten 4 Wochen nebeneinander gelegt
um zu erkennen Trend runter / rauf

hoffe habt verstanden was ich meine.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: Manfred X
Datum: 21.05.17 13:19

Hallo!

Du sortierst die Datensätze nach der Häufigkeit.
Das ergibt keinen Trend, sondern z.B. ein Pareto-Diagramm
(Ermittlung von Wochen mit besonderer Häufigkeit).

Um einen Zeit-Trend darzustellen, müssen die Daten gemäß der Abfolge
der Wochen aufbereitet werden.
Für einen statisch signifikant gesicherten Trend benötigt
man gewöhnlich mehr als vier Einzelwerte - es sei man kann plausible
Zusatzanahmen (z.B. Abgleich mit Gegentrends, Verteilungsmodelle) einführen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 21.05.17 13:38

Wie muss (könnte es denn)umgesetzt werden, ist ja grundsätzlich nicht wirklich falsch das in einer Analyse aufzuzeigen, das es hier und dort verbesserungen in Sicht sind aufgrund von gegensteuern und Maßnahmen.

kannst du helfen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: Manfred X
Datum: 21.05.17 13:57

Hallo!

Aus kurzen Zeitreihen (bis 10 Werte) lassen sich kaum Schlußfolgerungen ziehen,
es sei denn, die Störungs-Häufigkeiten würden "explosionsartig" ansteigen.
Dann ist vermutlich an der Anlage etwas kaputt gegangen, verschlissen oder sie
arbeitet mit falschen Einstellungen.

Sinnvoll kann es sein, einen Akzeptanzrahmen zu definieren, d.h. bei bestimmten
Störungen/Dauern wird eine gewisse Häufigkeit pro Zeitraum als "normal" toleriert.
Bei geringfügiger Überschreitung innerhalb eines Zeitraums wird eine Warnung ausgegeben,
bei größerer Überschreitung eine Alarm-Meldung.

Solche Überlegungen erfordern allerdings den Einbezug vielfältiger Erfahrungen mit den
Störungs-Arten, Störungs-Ursachen, Hinweis-Signalen für mögliche Maschinen-Ausfälle und
den damit jeweils verbundenen direkten Folgekosten bzw. den indirekten Wirkungen wie
den Kunden-Reaktionen bei Fehlern/Abweichungen bei den gelieferten Produkten
(Kunden-Toleranz-Niveau).

Ohne nähere Kenntnis Deiner Daten und deren Entstehung/Bedeutung kann man keine gezielten
Hinweise geben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 21.05.17 14:23

Manfred X schrieb:
Zitat:


Ohne nähere Kenntnis Deiner Daten und deren
Entstehung/Bedeutung kann man keine gezielten
Hinweise geben.


OK wie könnte ich dir mehr Kenntnis verschaffen?

die Daten werden bei uns manuell erfasst zu grundlegenden Störungsarten (der Eintrag wird so der Störungsart) zugewiesen.
Logistik
Mechanik
Elektrik
SPS
Pneumatik
EDV-PC
Sonstiges

eine Verfügbarkeit von 95% der jeweiligen Maschine wäre damit noch OK bzw. Zielwert je Maschine
lässt sich daraus etwas erstellen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: Manfred X
Datum: 21.05.17 14:42

In dem Fall könntest Du vermutlich - unabhängig von der Art der Störung -
die Dauer pro Störung (=Ausfallzeit der Maschine?) innerhalb der
einzelnen Wochen summieren.
Relevant wäre dann die Beurteilung, in wie vielen Wochen ist die
Ausfallzeit (in Minuten) größer als .05 * maximale Produktionsminuten
in der Woche.

Solche auf Klärung von Sachfragen gerichtete Analysen werden schnell kompliziert.

Es muß die Dauer der täglichen (geplanten) Anlagen-Laufzeit einbezogen werden,
ebenso ggf. die Zahl der Feiertage in jeder Woche oder evt. Produktion am
Wochenende bzw. Wochen die z.T. in die Betriebsferien fallen.
Erst daraus lassen sich die Produktionsminuten jeder Woche berechnen und in
Beziehung zu der Summe der Störungsdauern einer Maschine setzen:

Summe der Störungsdauern pro Woche > .05 * Produktionsminuten pro Woche = Warnung
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 21.05.17 18:29

Manfred X schrieb:
Zitat:


Es muß die Dauer der täglichen (geplanten) Anlagen-Laufzeit
einbezogen werden,
ebenso ggf. die Zahl der Feiertage in jeder Woche oder evt.
Produktion am
Wochenende bzw. Wochen die z.T. in die Betriebsferien fallen.
Erst daraus lassen sich die Produktionsminuten jeder Woche
berechnen und in
Beziehung zu der Summe der Störungsdauern einer Maschine
setzen:

Summe der Störungsdauern pro Woche > .05 *
Produktionsminuten pro Woche = Warnung


die täglich bzw. geplante Anlagenlaufzeit beträgt pro Schicht 443 Minuten also 1329 Minuten täglich
nun gut doch wie muss kann es aussehen da müsste ja vorab ein Schichtplan pro Woche her?

unsere Einträge geben folgende Info zurück

Datum | Eintragvon | Anlage | Station | Stoerungsart | Ereigniss | Stördauer | Beginn der Störung (DateTime)| Ende der Störung (DateTime)

Ich Danke dir für die Informationen, wie man das umsetzt fehlt mir sogar der Ansatz, deine Überlegungen sind aber verständlich.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: Manfred X
Datum: 21.05.17 19:11

Das sind die Probleme der Trend-Untersuchung.
Für aussagekräftige Resultate benötigt man in allen
untersuchten Zeit-Intervallen eine vergleichbare Basis.

Bei Beurteilung des Verlaufs von Betriebs-Störungen bei einer Anlage
kommt es auch darauf an,
- wie lange sie in einer Woche wegen Umrüstung oder Wartung abgeschaltet war,
- wie lange sie in einer Woche wegen niedriger Auftragslage oder fehlender
Vorprodukt-Zulieferung inaktiv war ("just-in-time"-Produktion)

Ich kann nicht beurteilen, wie stark sich diese Einflüße in Deinem Fall
auswirken.
Anlagen, die hohe Stückzahlen produzieren, laufen eventuell wochenlang gleichmäßig
durch; bei der Fertigung von spezialisierten Produkten kann es zu häufigen
Umstellungen mit entsprechenden Standzeiten kommen.

In vielen Betrieben gibt es genaue Aufzeichnungen über die Laufzeit von Anlagen.
Eine Alternative wären anlagenbezogene Listen, die über die Anzahl gefertigter
Produkte/Woche informieren.

Wenn in Deiner Datenbank solche Angaben fehlen, kannst Du eventuell ergänzende
Informationen aus anderen Quellen heranziehen und benötigte Angaben nach-erfassen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 22.05.17 06:38

Manfred X,

das scheint wohl dein Gebiet zu sein?

sehr informativ, da muss wirklich neu drüber überlegt werden.

inwieweit würde denn ein Topseller Zeitraum von x bis Y Sinn machen, welche Störungsart oder Station
war da in den TOP5, 10, 20 in einem Diagramm.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: Manfred X
Datum: 22.05.17 09:08

Sinn machen Diagramme, wenn sie auf konkrete Fragestellungen
zugeschnitten und die zugrundeliegenden Daten aussagekräftig
im Sinne dieser Fragestellung sind.

Wie bereits erwähnt, ist die absolute Häufigkeit des Auftretens
einer bestimmten Störung innerhalb eines Zeit-Intervalls
- isoliert betrachtet - nicht informativ (Ausnahme: Ausreißer).
Es werden Bezugsgrößen für die Einordnung der ermittelten Häufigkeiten
benötigt:
- Produktionspläne: Einstellungen der Anlage
- Erfahrungswerte: Toleranzschwellen für Ausfall-Häufigkeit
- Nutzungsintensität: Termindruck -> erhöhte Taktfrequenzen
- Alter der Anlage / Zeitraum seit letzter Wartung

Es kommt darauf an, bezogen auf eine konkrete Fragestellung,
geeignete Zusammenfassungen von Daten und Gewichtungen vorzunehmen.

Der Vergleich von Anlagen kann Hinweise auf Optimierungspotentiale
liefern. Dazu sind vermutlich Daten über längere Zeiträume zu summieren,
um die Vergleichbarkeit der Maschinen im Hinblick auf Auslastung,
Instandhaltungszustand, Bedienpersonal etc. sicher zu stellen.

Bei zeitbezogenen Analysen könnte man prüfen, ob es bei Anlagen Phasen mit
signifikant erhöhten Häufigkeiten (summiert über alle Störungsarten) gab.
Was war in diesen Phasen anders als sonst?
Zweckmäßig ist die Ermittlung von Informationen zu den Bedingungen, unter
denen schwere Störungen oder Häufungen von Störungen aufgetreten sind.

Interessant können Schwankunsanalysen sein. Gab es Phasen, in denen die
Häufigkeit von Störungen im Zeitverlauf relativ stark variierte?
Zu diesem Zweck kann man die Zeitintervalle zwischen je zwei Störungen
bestimmen, die innerhalb einer Betriebsperiode/Schicht aufgetreten sind
(störungs-spezifisch oder -unspezifisch) und sich deren Verteilung
anschauen.

Weitere Hinweise hatte ich bereits in anderen Threads gegeben, z.B.
Einführung von störungs-spezifischen Grenzdauern; die Störungen, die
über der zugehörigen Grenzdauer liegen, wären bei Analysen stärker
zu gewichten als die kurzfristig behebbaren Störungen.
Viele kleine Störungen eines bestimmten Typs sind im Rahmen einer
Optimierung eventuell weniger bedeutsam als einige gravierende.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 22.05.17 18:56

Hallo Manfred X,

das ist mal eine komplette Aufzeichnung die mir durch die Blume sagt das sich weitere Analysen in meinem bisherigen Projekt nicht umsetzen lässt, da es Bspw. keine Produktionspläne integriert sind
zwar eine Stückzahlerfassung die ausgewertet wird über die Taktzeit soll sodass man einen Nutzungsgrad, Leistungsgrad und Qualitätsgrad ermitteln kann daraus den sogenannten OEE ermittelt (auswertet)

ich Danke dir für die ausführliche Beschreibung, und denke das ich da so nicht weiterkomme. Richtig?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: Manfred X
Datum: 22.05.17 20:09

Nein. So eine Beurteilung kann ich nicht abgeben, weil mir dazu der Einblick fehlt.

Was ich vorschlage ist, zunächst alle verfügbaren Daten zusammenzutragen und zu klären,
welchen Informationsgehalt die verschiedenen Angaben tatsächlich liefern können (incl.
Hinweise zu Erhebungs- und Messfehlern, Datenausfällen, Protokollverlusten, ...)

In einem zweiten Schritt sind Fragestellungen zu entwickeln, die zu einer
geeigneten Aufbereitung dieses Datenmaterials und zu einer darauf aufbauenden
statistischen Analyse führen.

Aus diesen Ergebnissen lassen sich dann Hinweise auf Schwachstellen und auf
Optimierungspotentiale ableiten.

Du schreibst, daß z.B. Stückzahlen und Taktzeiten (pro Zeitintervall?) protokolliert werden.
Du mußt klären, wie sich die verschiedenartigen Informationen aufeinander beziehen
und zu Informationsträgern verdichten lassen.
Bei gezieltem Vorgehen sollte daraus einiges zu ermitteln sein.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 23.05.17 06:39

Danke Manfred X, deinen Vorschlag habe ich noch nicht ganz verstanden.

aber vorab noch etwas anderes: wie kann ich der Abfrage 2 Spalten hinzufügen

1. Prozentueller Anteil von (Count)
2. kummuliert in %


so das man ein Pareto draus machen könnte?

  Dim dt As DataTable = TPMDB.Stoerungen
        Dim cal As Globalization.Calendar = _
           Globalization.CultureInfo.CurrentCulture.Calendar
        'Stoerdauer = Reihe.UGruppe.Sum(Function(f) f.Stoerdauer)
        'Minuten_Ausfallzeit = If(Störzeiten_Abfrage.Count > 0, 
        ' Störzeiten_Abfrage.ToList.Select(Function(x) x.Stoerdauer).Sum, 0)
        'Minuten_Ausfallzeit = BS_Maschinen_Liste.Where(Function(x) x.ID = 
        ' IDMaschine).Select(Function(x) x.Taktzeit).FirstOrDefault
        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)("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", GetType( _
          Integer))
 
        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"
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Datenaufbereitung für Pareto-Chart 
Autor: Manfred X
Datum: 23.05.17 07:21

Hallo!

Damit wird das Thema Trendanalyse verlassen.

Die Aufbereitung der Daten für den Pareto-Chart würde ich nicht
in die Linq-Abfrage packen, sondern direkt in der Häufigkeits-
Tabelle vornehmen, an die der Chart später gebunden wird.

In der Tabelle "df" eine zusätzliche Double-Spalte ("Cum") anfügen,
in die die kumulierten Werte der sortierten Spalte "Count" eingetragen
werden.
Für die prozentualen Werte von Count wird ggf. eine weitere
Double-Spalte benötigt.

Sei "bs" die Bindingsource ....
bs.Sort = "Count Desc" 'Häufigkeiten fallend sortieren
 
Dim sm As Integer = 0 'Summations-Variable
 
For i As Integer = 0 To bs.Count - 1
   'Zugriff auf sortierte Zeilen über die Bindingsource
   Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
   'Häufigkeiten kumulieren
   sm += CInt(row("Count"))
   row("Cum") = sm   
Next i
 
'in Prozentanteile umrechnen
For i As Integer = 0 To bs.Count - 1
    Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
    row("Cum") = Math.Round(CInt(row("Cum")) / sm * 100, 2)
    'entsprechend für die Spalte "Count"
Next i
Die Prozentwerte-Spalten können sich auch durch Expression-Columns
gebildet werden.

Beitrag wurde zuletzt am 23.05.17 um 07:31:04 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 23.05.17 12:12

das Thema, Analyse habe ich noch nicht wirklich verworfen


So weit verstanden, Manfred

das kummulieren sieht auch plausibel aus, bei der Umrechnung noch einen Haken? und das im richtigen Format % anzeigen?

        Dim df As New DataTable
        df.Columns.Add("ArtderStörung") : df.Columns.Add("Count", GetType( _
          Integer)) : df.Columns.Add("Cum", GetType(Double)) _
                                        : df.Columns.Add("Proz", GetType( _
                                        Double))
 
        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" 'Häufigkeiten fallend sortieren
 
        Dim sm As Integer = 0 'Summations-Variable
 
        For i As Integer = 0 To bs.Count - 1
            'Zugriff auf sortierte Zeilen über die Bindingsource
            Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
            'Häufigkeiten kumulieren
            sm += CInt(row("Count"))
            row("Cum") = sm
        Next i
 
        ' ''in Prozentanteile umrechnen
        ''For i As Integer = 0 To bs.Count - 1
        ''    Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
        ''    row("Cum") = Math.Round(CInt(row("Cum")) / sm * 100, 2)
        ''    'entsprechend für die Spalte "Count"
        ''Next i
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Hinweise zum Pareto-Chart 
Autor: Manfred X
Datum: 23.05.17 13:07

Der übliche Pareto-Chart besitzt zwei Y-Achsen.

Auf der linken Seite wird die Gesamtsumme der Häufigkeiten als Obergrenze gesetzt:
Chart.AxisY = sm
Auf der rechten Seite wird 100% als Obergrenze gesetzt: Chart.AxisY2 = 100

Die Spalte mit den fallend sortierten Häufigkeiten wird als Chart-Datenserie vom Typ
"Column" der linken Achse zugeordnet: Chart.Series("...").YAxisType = AxisType.Primary

Die Spalte mit den kumulierten und in Prozentwerte umgerechneten Häufigkeiten,
was Du oben auskommentiert hast, wird als ChartType "Line" gebunden und der
rechten Achse zugeordnet: Chart.Series("...").YAxisType = AxisType.Secondary

Beitrag wurde zuletzt am 23.05.17 um 13:11:31 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 23.05.17 13:42

OK, werde ich dann so probieren ob es mir auch gelingt, haste schon viel geholfen.

zum obigen auskommentierten bin ich unsicher ob es passt habe da eine Spalte Proz hinzugefügt befülle die aber noch garnicht.

da brauche ich dich noch mal
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 23.05.17 14:56

hier mal mein Ergebnis Manfred X,

ArtderStörung	Count	Cum	Proz
sonstige	10	10	71,43
Mechanik	3	13	92,86
Elektrik	1	14	100
hier ist der 1. Code Teil
nun soll daraus ein Pareto werden, wenn Ergebnis passt.

 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.FirstFourDayWeek, _
                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", GetType( _
          Integer)) : df.Columns.Add("Cum", GetType(Double)) _
                                        : df.Columns.Add("Proz", GetType( _
                                        Double))
 
        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" 'Häufigkeiten fallend sortieren
 
        Dim sm As Integer = 0 'Summations-Variable
 
        For i As Integer = 0 To bs.Count - 1
            'Zugriff auf sortierte Zeilen über die Bindingsource
            Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
            'Häufigkeiten kumulieren
            sm += CInt(row("Count"))
            row("Cum") = sm
        Next i
 
        'in Prozentanteile umrechnen
        For i As Integer = 0 To bs.Count - 1
            Dim row As DataRow = DirectCast(bs(i), DataRowView).Row
            row("Proz") = Math.Round(CInt(row("Cum")) / sm * 100, 2)
            'entsprechend für die Spalte "Count"
        Next i
 
        If bs.Count <> 1 Then
            lbl_Stoerdaten_KW_Info.Text = String.Concat(bs.Count & " Einträge" & _
              "gefunden").ToString
        Else
            lbl_Stoerdaten_KW_Info.Text = String.Concat(bs.Count & " Eintrag" & _
              "gefunden").ToString
        End If
        'Daten in der DGV anzeigen
        dgv_Stoerdaten_Auswertung_KW.DataSource = bs
 
 
        With dgv_Stoerdaten_Auswertung_KW
            .Columns(0).AutoSizeMode = DataGridViewAutoSizeColumnsMode.Fill
            .Columns(1).Width = 60
        End With
 
        With dgv_Stoerdaten_Auswertung_KW
            .EnableHeadersVisualStyles = False
            .ColumnHeadersDefaultCellStyle.Alignment = _
              DataGridViewContentAlignment.MiddleCenter
            .ColumnHeadersDefaultCellStyle.BackColor = Color.DimGray
            .ColumnHeadersDefaultCellStyle.ForeColor = Color.FloralWhite
            .BackgroundColor = Color.LightGray
            .Font = New Font("Consolas;", 9.5, FontStyle.Regular)
            .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
            .ColumnHeadersHeight = 38
            .ColumnHeadersHeightSizeMode = _
              DataGridViewColumnHeadersHeightSizeMode.DisableResizing
            .RowHeadersVisible = False
            '.GridColor = System.Drawing.Color.DarkBlue
            .GridColor = System.Drawing.Color.DarkGray
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .DefaultCellStyle.WrapMode = DataGridViewTriState.True
            .AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells
        End With
        With dgv_Stoerdaten_Auswertung_KW.DefaultCellStyle
            .SelectionForeColor = Color.OldLace
            .SelectionBackColor = Color.Olive
            .BackColor = Color.LightGray
            .ForeColor = Color.Black
            .Font = New Font("Consolas;", 8.0, FontStyle.Regular)
        End With
        With dgv_Stoerdaten_Auswertung_KW.AlternatingRowsDefaultCellStyle
            .SelectionForeColor = Color.OldLace
            .SelectionBackColor = Color.Olive
            .BackColor = Color.WhiteSmoke
            .ForeColor = Color.Black
            .Font = New Font("Consolas;", 8.0, FontStyle.Regular)
        End With
        'Ende Auswertung
Code 2. Teil in neuer Antwort, aufgrund der größe

Beitrag wurde zuletzt am 23.05.17 um 15:00:57 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Stoerdaten Trendanalyse 
Autor: ERBRU
Datum: 23.05.17 14:58

 Private Function GetFreq1(ByVal week As Integer, _
       year As Integer, masch As Integer) As DataTable
        Dim Minuten_Ausfallzeit As Integer
 
        'Chart anzeigen
        With Chart2
            .ChartAreas.Clear()
            .Series.Clear()
            .Legends.Clear()
            .AntiAliasing = AntiAliasingStyles.All
            .TextAntiAliasingQuality = TextAntiAliasingQuality.High
            .BorderWidth = 2
            .Titles.Clear()
            .Titles.Add("Titel")
            .Titles(0).Text = tbx_SZ_Datumsbereich.Text
            .Titles(0).Font = New Font("Thahoma", 10, FontStyle.Regular)
            .Titles(0).ForeColor = Color.Blue
            .Titles(0).BorderColor = Color.Transparent
            .Titles(0).BackColor = Color.Transparent
            .Titles(0).Alignment = System.Drawing.ContentAlignment.BottomCenter
            .Titles(0).ToolTip = ""
            .DataSource = bs
            'hier könnte man auch mittels IF Bedingung 3D <> 2D umschalten
            .ChartAreas.Add("Base").Area3DStyle.Enable3D = False
 
            'X - Achse
            With .ChartAreas("Base").AxisX
                .Title = "Bezeichnung"
                .TitleForeColor = Color.Black
                .IsLabelAutoFit = True
                .LabelStyle.Font = New Font("Arial", 10)
                .LabelStyle.ForeColor = Color.Black
                .LabelStyle.Angle = -45
                .Interval = 1
                .LineColor = Color.DarkGray
                .MajorGrid.LineColor = Color.DarkGray
            End With
            'Y - Achse 
            With .ChartAreas("Base").AxisY
                .Title = "Anzahl"
                .LabelStyle.Font = New Font("Arial", 10)
                .TitleForeColor = Color.Black
                .LabelStyle.ForeColor = Color.Black
                .LineColor = Color.Black
                .MajorGrid.LineColor = Color.DarkGray
            End With
 
            .Series.Add("Störtyp")
 
            With .Series("Störtyp")
                .XValueMember = "ArtderStörung"
                .YValueMembers = df.Columns(1).ColumnName
                .CustomProperties = "PixelPointWidth = 25"
                .BorderWidth = 3
                .MarkerBorderWidth = 5
                .ChartType = SeriesChartType.Column
                .IsValueShownAsLabel = True
                .ChartArea = "Base"
            End With
 
 
 
 
            .Legends.Add("Default")
            .Legends("Default").Alignment = StringAlignment.Center
            .Legends("Default").Docking = Docking.Top
            .Legends("Default").BackColor = Color.Transparent
            .Legends("Default").ForeColor = Color.Black
        End With
        Return df
    End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Beispiel für Pareto-Chart 
Autor: Manfred X
Datum: 23.05.17 16:35

Den Code habe ich mir nicht im Detail angeschaut.
Meine Vorschläge zum Pareto-Chart scheinen nicht enigebaut worden zu sein

Hier ein Beispiel (Windows.Forms):
bs: Bindingsource
cht: Chart-Control

Dim dx As New DataTable
With dx.Columns
    .Add("ArtderStörung", GetType(String))
    .Add("Count", GetType(Integer))
    .Add("Cum", GetType(Integer))
    .Add("CumPerc", GetType(Double))
End With
 
'Die Daten
With dx.Rows
    .Add("sonstige", 10)
    .Add("Mechanik", 3)
    .Add("Elektrik", 1)
End With
 
bs.DataSource = dx
bs.Sort = "Count Desc" 'Häufigkeit fallend sortieren
 
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
 
With cht
   .DataSource = bs
   .ChartAreas.Add("Base")
   .Titles.Add("Pareto Demo")
 
   'Einrichtung der Achsen
   With cht.ChartAreas("Base")
      .AxisX.Interval = 1
 
      .AxisY.Title = "Häufigkeit"
      .AxisY.Maximum = sm
      .AxisY.MajorGrid.Enabled = False
 
      .AxisY2.Title = "Cum. Häufigkeit /Prozent"
      .AxisY2.MajorGrid.Interval = 10
      .AxisY2.Maximum = 100
   End With
 
   'Zuordnung der Tabellenspalten zu Datenserien
 
   .Series.Add("Störungsart")
   With .Series("Störungsart")
      .ChartType = SeriesChartType.Column
      .XValueMember = "ArtderStörung"
      .YValueMembers = "Count"
      .YAxisType = AxisType.Primary
   End With
 
   .Series.Add("Cum")
   With .Series("Cum")
      .ChartType = SeriesChartType.Line
      .XValueMember = "ArtderStörung"
      .YValueMembers = "CumPerc"
      .YAxisType = AxisType.Secondary
      .BorderWidth = 2
   End With
End With
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für Pareto-Chart 
Autor: ERBRU
Datum: 23.05.17 18:17

Fabelhaft hast mir sehr geholfen

Danke! funktioniert super
leider kann man das hier nicht zeigen als Screenchot.

jetzt könnte man evtl. noch in A,B,C gliedern?
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