Color scheme: Dark
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Grenzwerte und einen Trend in einem Diagramm anzeigen

Grenzwerte und einen Trend in einem Diagramm anzeigen

Zeichnen Sie ein Toleranzband und einen Mindestwert in ein Diagramm ein, zeigen Sie mehrere Messstellen als je eine Reihe, zählen Sie Datensätze pro Monat als Säulen, und lesen Sie die Steigung und das Datum ab, an dem ein Grenzwert erreicht wird.

Voraussetzungen: WKL Forms Object Library 1.60 oder höher.

Lösungsüberblick

  • AddReference FromValue, [ToValue], [Caption], [Kind] fügt eine Grenzlinie (ein Wert) oder ein Band (zwei Werte) in der Farbe einer Statusart hinzu (wskOk, wskWarn, wskBad, wskInfo). Die Werteachse schließt immer jeden Grenzwert und jedes Band ein. ClearReferences entfernt sie alle.
  • Breite oder lange Daten: YFields = "Wand;Soll" ergibt eine Reihe je Feld; YFields = "Wand" mit SeriesField = "Stelle" ergibt eine Reihe je Wert von Stelle.
  • Zusammenfassen: Aggregate (wcaSum, wcaAverage, wcaCount, wcaMin, wcaMax) gruppiert zusammen mit Period (wcyDay … wcyYear) eine Datumsachse. wcaCount braucht kein Y-Feld.
  • Trend: Mit ShowTrend = True erhält jede Reihe eine gestrichelte Ausgleichsgerade nach der Methode der kleinsten Quadrate. TrendSlope(i) ist die Änderung je X-Einheit (auf einer Datumsachse je Tag), TrendReaches(i, Value) das Datum, an dem die Gerade Value erreicht, oder Null.

Umsetzung

Alle drei Diagramme werden in Form_Load eines Formulars mit den WKL-Chart-Steuerelementen chtWand, chtAlle und chtMonat eingerichtet. Die Tabellen sind die des Tutorials (Eine Messreihe mit Grenze und Trend anzeigen), dazu eine Abfrage qryMessStelle (SELECT tblMess.Datum, tblMess.Wand, tblStelle.Name AS Stelle FROM tblMess INNER JOIN tblStelle ON tblMess.StelleID = tblStelle.ID).

Option Compare Database
Option Explicit
 
Private Sub Form_Load()
    On Error GoTo ErrorHandler
 
    ' One point with its tolerance band and minimum.
    With Me!chtWand.Object
        .RecordSource = "SELECT Datum, Wand FROM tblMess WHERE StelleID = 1"
        .XField = "Datum"
        .YFields = "Wand"
        .ShowTrend = True
        .ClearReferences
        .AddReference 9, 10, "Toleranz", wskOk
        .AddReference 8.5, , "Soll-min", wskBad
    End With
 
    ' All points, one series each, from long data.
    With Me!chtAlle.Object
        .RecordSource = "qryMessStelle"
        .XField = "Datum"
        .YFields = "Wand"
        .SeriesField = "Stelle"
    End With
 
    ' Measurements per year as columns.
    With Me!chtMonat.Object
        .RecordSource = "tblMess"
        .XField = "Datum"
        .ChartType = wctColumn
        .Aggregate = wcaCount
        .Period = wcyYear
    End With
 
FinalHandler:
    Exit Sub
 
ErrorHandler:
    MsgBox Err.Description, vbExclamation
    Resume FinalHandler
End Sub
 
Private Sub chtWand_DataLoaded(ByVal Points As Long)
    On Error GoTo ErrorHandler
 
    ' Slope per day, shown per year; the date the minimum is reached, or Null.
    Debug.Print "Pro Jahr: "; Format(Me!chtWand.Object.TrendSlope(0) * 365.25, "0.00"); " mm"
    Debug.Print "Soll-min am: "; Nz(Me!chtWand.Object.TrendReaches(0, 8.5), "nie")
 
FinalHandler:
    Exit Sub
 
ErrorHandler:
    Debug.Print Err.Description
    Resume FinalHandler
End Sub

Hinweise

  • Werden die Eigenschaften nacheinander gesetzt, liest das Diagramm die Daten nach jeder Änderung neu. Ein zwischenzeitliches DataLoaded mit einem LastError ist normal, solange die Einstellungen unvollständig sind. Wer sie in der Entwurfsansicht (oder im Designer) setzt, vermeidet das.
  • Eine Zeile ohne lesbaren X-Wert wird nicht gezeichnet; RowsWithoutX zählt sie.
  • Ein fehlender Y-Wert unterbricht die Linie (Missing = wcvGap); wcvConnect lässt den Punkt aus, wcvZero zählt ihn als 0. Ein Zeitraum ganz ohne Wert ist eine Lücke, nicht 0.
  • Mehr als 2.000 Punkte auf einer Linie werden für die Darstellung verdichtet, und das Diagramm weist darauf hin; Trend und Achse verwenden alle Werte.
  • Ein Klick auf einen Legendeneintrag blendet dessen Reihe aus oder ein (SeriesVisible); ein Klick auf einen Punkt löst PointClick(Series, X, Y) aus.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/show-limits-and-a-trend-in-a-chart.txt · Last modified: by Wolfgang van der Stille