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
- Grenzwerte und einen Trend in einem Diagramm anzeigen: Bänder, mehrere Reihen, Anzahlen je Monat.