Tiskanje merilnikov in grafikonov v poročilu
Za vsak zapis poročila Access natisnite po en merilnik, kartico s ključnim kazalnikom ali grafikon – na primer debelino stene vsakega merilnega mesta z njegovo mejo in trendom –, tako da izpis ostane berljiv tudi na črno-belem tiskalniku ali tiskalniku s sivinami.
Zahteva WKL Forms Object Library 1.62 ali novejšo različico.
Pregled rešitve
- Vezan
WklGaugealiWklKpiCardv odseku s podrobnostmi prikaže vrednost vsakega zapisa: vir kontrolnika nastavite na polje, tako kot pri polju z besedilom. WklChartv odseku s podrobnostmi sam prebere podatke vsakega zapisa prekLinkMasterFieldsinLinkChildFields. Access poročilu preda le polja, ki so vezana na kontrolnik: glavno polje (na primerID) postavite v polje z besedilom v odseku s podrobnostmi; to je lahko nevidno.- Meje za vsak zapis: mejne črte in pasovi se z grafikonom ne shranijo. Nastavite jih v dogodku Format odseka s podrobnostmi, kjer so na voljo polja zapisa; kadar dogodek potrebuje podatke zapisa, na primer za
TrendReaches, tam pokličiteRequery. - Dogodek Format kot izraz: odseku s podrobnostmi nastavite lastnost dogodka
=FormatMesto(), funkcijo pa zapišite v standardni modul. Poročilo tako ne potrebuje lastnega modula. Poročilo s kontrolnikom ActiveX in lastnim modulom lahko v datoteki ACCDE odpove z napako 459 (objekt ali razred ne podpira nabora dogodkov) – to je napaka programa Access, saj datoteka ACCDB deluje; vzrok in popravilo opisuje spodnja stran za odpravljanje težav. PrintStyle: s privzeto vrednostjowpsAutomaticmerilnik in grafikon dodata vzorce, ko ju natisnete ali prikažete v predogledu tiskanja: šrafirana območja in pasove, črtkane nize in mejne črte, ki se razlikujejo po potezi. Na izpisu s sivinami tako ostanejo „slabo“, „opozorilo“ in „v redu“ ločeni.- Ozadje: merilnik s privzeto vrednostjo
BackColorin grafikon s svetlo barvno shemo v poročilu nimata lastnega ozadja: skozi se vidi barva razdelka, tudi izmenična barva vrstic.
Izvedba
Poročilo rptMesta nad tabelo tblMesto (ID, Ime, MinDebelina) ima v odseku s
podrobnostmi polja z besedilom txtId (vir kontrolnika ID, nevidno), txtIme in
txtDosezeno, merilnik WKL Gauge gauDebelina z virom kontrolnika Debelina in grafikon WKL Chart
chtDebelina, ki je v pogledu načrta vezan na meritve: RecordSource = tblMeritev, XField = Datum,
YFields = Debelina, LinkMasterFields = ID, LinkChildFields = MestoID, ShowTrend = True.
Polje z besedilom txtMinDebelina (vir kontrolnika MinDebelina) nosi mejo zapisa.
Lastnost dogodka Format (On Format) odseka s podrobnostmi je =FormatMesto(); poročilo
nima lastnega modula. V standardnem modulu:
Option Compare Database
Option Explicit
Public Function FormatMesto() As Variant
Dim r As Report, chart As Object, reached As Variant
On Error GoTo ErrorHandler
Set r = Reports("rptMesta")
Set chart = r!chtDebelina.Object
' The data of this record before the chart is drawn: needed for TrendReaches below.
chart.Requery
chart.ClearReferences
chart.AddReference r!txtMinDebelina, , "Minimum", wskBad
reached = chart.TrendReaches(0, r!txtMinDebelina)
r!txtDosezeno = IIf(IsNull(reached), "Trend ne doseže minimuma", "Minimum dosežen " & Format(reached, "m. yyyy"))
FinalHandler:
Set chart = Nothing
Set r = Nothing
Exit Function
ErrorHandler:
' A repeating event: write the error into the record's line instead of showing a dialog for every record.
Reports("rptMesta")!txtDosezeno = Err.Description
Resume FinalHandler
End Function
Če želite barve ohraniti tudi na papirju, nastavite PrintStyle na wpsColor (na listu z
lastnostmi ali v oblikovalniku, kartica PrintStyle). Če naj bodo vzorci vidni tudi na zaslonu,
za bralce, ki se ne morejo zanesti na barve, nastavite wpsPatterns.
Opombe
- Podprt izhod: predogled tiskanja in datoteka PDF, ki jo zapiše
DoCmd.OutputTo, z eno sliko z mejami in trendom na zapis. Neposredno tiskanje na tiskalnik ne spada v podprti izhod; gonilnik tiskalnika, ki ne sporoča mešanja alfa, dobi kontrolnike z njihovim lastnim ozadjem. - Glavno polje brez kontrolnika se prebere kot prazno: grafikon tedaj prikaže „Ni podatkov“.
- V poročilu ni dogodkov: kontrolniki WKL v poročilu ne sprožajo dogodkov (
DataLoaded,RangeChange…); uporabiteRequeryv dogodku Format, kot je prikazano zgoraj. - V datoteki ACCDE se isto poročilo prav tako natisne, tudi z dogodkom Format kot izrazom.
WklKpiCardohrani videz kartice: zasnovana je kot ploščica z obrobo. Njeno stanje je izpisano tudi z besedilom, zato vzorcev ne potrebuje.