Prikaz niza meritev z mejo in trendom
Zgradite obrazec, ki za vsak zapis prikaže eno merilno mesto, ob njem pa debelino stene tega mesta skozi čas: črto z najmanjšo vrednostjo kot mejno črto, črtkan trend in datum, ko trend doseže najmanjšo vrednost.
Predpogoji
- Microsoft 365 Access ali Access Runtime, v 32- ali 64-bitni različici, z nameščenim paketom WKL Forms Object Library 1.60 ali novejšim, registriranim za trenutnega uporabnika sistema Windows (Namestitev izdanega paketa).
Koraki
1. Ustvarite tabeli
Proceduro prilepite v standardni modul in jo enkrat zaženite iz okna Immediate
(CreateChartSample). Ustvari dve merilni mesti in njune meritve; mesto TML-1 vsako leto izgubi
0,25 mm.
Public Sub CreateChartSample()
Dim db As DAO.Database, i As Long
On Error GoTo ErrorHandler
Set db = CurrentDb
db.Execute "CREATE TABLE tblMesto (ID LONG CONSTRAINT PK_Mesto PRIMARY KEY, Ime TEXT(50), MinDebelina DOUBLE)"
db.Execute "CREATE TABLE tblMeritev (ID COUNTER CONSTRAINT PK_Meritev PRIMARY KEY, MestoID LONG, Datum DATETIME, Debelina DOUBLE)"
db.Execute "INSERT INTO tblMesto VALUES (1, 'TML-1', 8.5)"
db.Execute "INSERT INTO tblMesto VALUES (2, 'TML-2', 6)"
For i = 0 To 7
db.Execute "INSERT INTO tblMeritev (MestoID, Datum, Debelina) 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 tblMeritev (MestoID, Datum, Debelina) 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. Vstavite grafikon
V pogledu načrta ustvarite obrazec frmMesto z virom zapisov tblMesto, poljema z besedilom
Ime in MinDebelina ter nevezanim poljem z besedilom txtDosezeno. Izberite Načrt obrazca ›
Kontrolniki › Kontrolniki ActiveX (Form Design › Controls › ActiveX Controls), desno vstavite
WKL Chart in ga poimenujte Chart1. Shranite in zaprite obrazec.
3. Vežite grafikon
Nastavitve grafikona se shranijo z obrazcem. Nastavite jih enkrat s kodo v pogledu načrta (iz okna
Immediate zaženite BindChart) ali v njegovem oblikovalniku (list z lastnostmi, zavihek Drugo,
vrstica Po meri, [...], strani Podatki, Videz in Povezava).
Public Sub BindChart()
Dim c As Object
On Error GoTo ErrorHandler
DoCmd.OpenForm "frmMesto", acDesign
Set c = Forms("frmMesto").Controls("Chart1").Object
c.RecordSource = "tblMeritev"
c.XField = "Datum" ' a date: time axis with calendar steps
c.YFields = "Debelina"
c.LinkMasterFields = "ID" ' follow the current record, as a subform does
c.LinkChildFields = "MestoID"
c.Title = "Debelina stene"
c.YFormat = "0.0"
c.ShowTrend = True
DoCmd.Close acForm, "frmMesto", acSaveYes
FinalHandler:
Set c = Nothing
Exit Sub
ErrorHandler:
MsgBox Err.Description, vbExclamation
Resume FinalHandler
End Sub
4. Narišite mejo in pokažite, kdaj bo dosežena
Odprite modul obrazca frmMesto in dodajte:
Option Compare Database
Option Explicit
Private Sub Form_Current()
On Error GoTo ErrorHandler
With Me!Chart1.Object
.ClearReferences
.AddReference Me!MinDebelina, , "Minimum", 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!txtDosezeno = Me!Chart1.Object.LastError
GoTo FinalHandler
End If
reached = Me!Chart1.Object.TrendReaches(0, Me!MinDebelina)
If IsNull(reached) Then
Me!txtDosezeno = "Trend ne doseže minimuma"
Else
Me!txtDosezeno = "Minimum dosežen " & Format(reached, "d. m. yyyy")
End If
FinalHandler:
Exit Sub
ErrorHandler:
Me!txtDosezeno = Err.Description
Resume FinalHandler
End Sub
5. Preizkusite
Odprite frmMesto v pogledu obrazca. Grafikon prikazuje osem meritev mesta TML-1, ki padajo od
10,0 do 8,25, rdečo črto Minimum pri 8,5 in črtkan trend; txtDosezeno navaja datum v
letu 2024. Pojdite na naslednji zapis: grafikon prebere tri meritve mesta TML-2 in nariše njegovo mejo
pri 6.
Pričakovani rezultat
Grafikon sledi trenutnemu merilnemu mestu, njegovo mejo vedno prikaže znotraj osi vrednosti in
sporoči datum, ko jo trend doseže. Napačen vir zapisov ne ustavi obrazca: grafikon izriše napako,
LastError pa vsebuje njeno besedilo.
Naslednji koraki
- Prikaz mej in trenda v grafikonu: pasovi, več nizov, število po mesecih.