Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » Datenansichten » WklChart » Eine Messreihe mit Grenze und Trend anzeigen

Eine Messreihe mit Grenze und Trend anzeigen

Sie bauen ein Formular, das je Datensatz eine Messstelle zeigt und daneben die Wandstärke dieser Stelle über dem Datum: eine Linie mit ihrem Minimum als Grenzlinie, einen gestrichelten Trend und das Datum, an dem der Trend das Minimum erreicht.

Voraussetzungen

  • Microsoft 365 Access oder Access Runtime, in 32 oder 64 Bit, mit der WKL Forms Object Library 1.60 oder höher, installiert und für den aktuellen Windows-Benutzer registriert (Freigegebenes Paket installieren).

Schritte

1. Tabellen anlegen

Fügen Sie die Prozedur in ein Standardmodul ein und führen Sie sie einmal im Direktbereich aus (CreateChartSample). Sie legt zwei Messstellen und deren Messungen an; die Stelle TML-1 verliert 0,25 mm pro Jahr.

Public Sub CreateChartSample()
    Dim db As DAO.Database, i As Long
    On Error GoTo ErrorHandler
 
    Set db = CurrentDb
    db.Execute "CREATE TABLE tblStelle (ID LONG CONSTRAINT PK_Stelle PRIMARY KEY, Name TEXT(50), SollMin DOUBLE)"
    db.Execute "CREATE TABLE tblMess (ID COUNTER CONSTRAINT PK_Mess PRIMARY KEY, StelleID LONG, Datum DATETIME, Wand DOUBLE)"
    db.Execute "INSERT INTO tblStelle VALUES (1, 'TML-1', 8.5)"
    db.Execute "INSERT INTO tblStelle VALUES (2, 'TML-2', 6)"
    For i = 0 To 7
        db.Execute "INSERT INTO tblMess (StelleID, Datum, Wand) VALUES (1, #" & Format(DateSerial(2018 + i, 3, 1), "yyyy-mm-dd") & "#, " & Str(10 - 0.25 * i) & ")"
    Next
    For i = 0 To 2
        db.Execute "INSERT INTO tblMess (StelleID, Datum, Wand) VALUES (2, #" & Format(DateSerial(2020 + i, 6, 1), "yyyy-mm-dd") & "#, " & Str(7 - 0.1 * i) & ")"
    Next
 
FinalHandler:
    Set db = Nothing
    Exit Sub
 
ErrorHandler:
    MsgBox Err.Description, vbExclamation
    Resume FinalHandler
End Sub

2. Diagramm einfügen

Erstellen Sie in der Entwurfsansicht ein Formular frmStelle mit der Datenherkunft tblStelle, den Textfeldern Name und SollMin und einem ungebundenen Textfeld txtErreicht. Wählen Sie Formularentwurf › Steuerelemente › ActiveX-Steuerelemente, fügen Sie rechts WKL Chart ein und nennen Sie es Chart1. Speichern und schließen Sie das Formular.

3. Diagramm binden

Die Einstellungen des Diagramms werden mit dem Formular gespeichert. Legen Sie sie einmal per Code in der Entwurfsansicht fest (führen Sie BindChart im Direktbereich aus) oder in seinem Designer (Eigenschaftenblatt, Registerkarte Andere, Zeile Benutzerdefiniert, [...], Seiten Daten, Darstellung und Verknüpfung).

Public Sub BindChart()
    Dim c As Object
    On Error GoTo ErrorHandler
 
    DoCmd.OpenForm "frmStelle", acDesign
    Set c = Forms("frmStelle").Controls("Chart1").Object
    c.RecordSource = "tblMess"
    c.XField = "Datum"             ' a date: time axis with calendar steps
    c.YFields = "Wand"
    c.LinkMasterFields = "ID"      ' follow the current record, as a subform does
    c.LinkChildFields = "StelleID"
    c.Title = "Wandstärke"
    c.YFormat = "0.0"
    c.ShowTrend = True
    DoCmd.Close acForm, "frmStelle", acSaveYes
 
FinalHandler:
    Set c = Nothing
    Exit Sub
 
ErrorHandler:
    MsgBox Err.Description, vbExclamation
    Resume FinalHandler
End Sub

4. Grenze einzeichnen und anzeigen, wann sie erreicht wird

Öffnen Sie das Modul von frmStelle und fügen Sie hinzu:

Option Compare Database
Option Explicit
 
Private Sub Form_Current()
    On Error GoTo ErrorHandler
 
    With Me!Chart1.Object
        .ClearReferences
        .AddReference Me!SollMin, , "Soll-min", wskBad
    End With
 
FinalHandler:
    Exit Sub
 
ErrorHandler:
    MsgBox Err.Description, vbExclamation
    Resume FinalHandler
End Sub
 
Private Sub Chart1_DataLoaded(ByVal Points As Long)
    Dim reached As Variant
    On Error GoTo ErrorHandler
 
    If Len(Me!Chart1.Object.LastError) > 0 Then
        Me!txtErreicht = Me!Chart1.Object.LastError
        GoTo FinalHandler
    End If
    reached = Me!Chart1.Object.TrendReaches(0, Me!SollMin)
    If IsNull(reached) Then
        Me!txtErreicht = "Trend erreicht Soll-min nicht"
    Else
        Me!txtErreicht = "Soll-min erreicht am " & Format(reached, "dd.mm.yyyy")
    End If
 
FinalHandler:
    Exit Sub
 
ErrorHandler:
    Me!txtErreicht = Err.Description
    Resume FinalHandler
End Sub

5. Ausprobieren

Öffnen Sie frmStelle in der Formularansicht. Das Diagramm zeigt die acht Messungen von TML-1, die von 10,0 auf 8,25 fallen, die rote Linie Soll-min bei 8,5 und den gestrichelten Trend; txtErreicht nennt ein Datum im Jahr 2024. Wechseln Sie zum nächsten Datensatz: Das Diagramm liest die drei Messungen von TML-2 und zeichnet dessen Grenze bei 6.

Erwartetes Ergebnis

Das Diagramm folgt der aktuellen Messstelle, zeigt ihre Grenze immer innerhalb der Wertachse und meldet das Datum, an dem der Trend sie erreicht. Eine falsche Datenherkunft hält das Formular nicht an: Das Diagramm zeichnet den Fehler, und LastError enthält seinen Text.

Nächste Schritte

de/wiki/msaccess/comctl/data-views/chart/tutorial.txt · Zuletzt geändert: von Wolfgang van der Stille