Messanzeigen und Diagramme in einem Bericht drucken
Drucken Sie je Datensatz eines Access-Berichts eine Messanzeige, eine Kennzahlkarte oder ein Diagramm – etwa die Wandstärke jeder Messstelle mit Grenzwert und Trend –, sodass der Ausdruck auch auf einem Schwarzweiß- oder Graustufendrucker lesbar bleibt.
Voraussetzungen: WKL Forms Object Library 1.62 oder höher.
Lösungsüberblick
- Eine gebundene
WklGaugeoderWklKpiCardim Detailbereich zeigt den Wert jedes Datensatzes an: Setzen Sie ihren Steuerelementinhalt wie bei einem Textfeld auf das Feld. - Ein
WklChartim Detailbereich liest die Daten jedes Datensatzes selbst, überLinkMasterFieldsundLinkChildFields. Access übergibt einem Bericht nur die Felder, die an ein Steuerelement gebunden sind: Legen Sie das Hauptfeld (zum BeispielID) in ein Textfeld des Detailbereichs; es darf unsichtbar sein. - Grenzwerte je Datensatz: Grenzlinien und Bänder werden nicht mit dem Diagramm gespeichert. Setzen Sie sie im Ereignis „Beim Formatieren“ des Detailbereichs, wo die Felder des Datensatzes verfügbar sind. Rufen Sie dort
Requeryauf, wenn das Ereignis die Daten des Datensatzes benötigt, zum Beispiel fürTrendReaches. - Das Ereignis „Beim Formatieren“ als Ausdruck: Geben Sie dem Detailbereich die Ereigniseigenschaft
=FormatStelle()und legen Sie die Funktion in ein Standardmodul. Der Bericht braucht dann kein eigenes Modul. Ein Bericht mit einem ActiveX-Steuerelement und eigenem Modul kann in einer ACCDE mit Fehler 459 „Object or class does not support the set of events“ scheitern (ein Fehler in Access; die ACCDB funktioniert). Ursache und Abhilfe beschreibt die unten verlinkte Seite zur Fehlerbehebung. PrintStyle: Mit dem StandardwertwpsAutomaticfügen Messanzeige und Diagramm beim Drucken und in der Seitenansicht Muster hinzu: schraffierte Bereiche und Bänder, gestrichelte Reihen, Grenzlinien mit unterschiedlicher Strichart. Auf einem Graustufenausdruck bleiben „schlecht“, „Warnung“ und „gut“ unterscheidbar.- Hintergrund: Eine Messanzeige mit dem Standardwert von
BackColorund ein Diagramm mit hellem Farbschema haben in einem Bericht keinen eigenen Hintergrund: Die Farbe des Bereichs scheint durch, auch die alternative Hintergrundfarbe.
Umsetzung
Ein Bericht rptStellen auf der Tabelle tblStelle (ID, Name, SollMin) enthält im Detailbereich die Textfelder
txtId (Steuerelementinhalt ID, Sichtbar: Nein), txtName und txtErreicht, eine WKL Gauge gauWand mit dem
Steuerelementinhalt Wand und ein WKL Chart chtWand, das in der Entwurfsansicht an die Messwerte gebunden ist:
RecordSource = tblMess, XField = Datum, YFields = Wand, LinkMasterFields = ID, LinkChildFields =
StelleID, ShowTrend = True. Das Textfeld txtSollMin (Steuerelementinhalt SollMin) trägt den Grenzwert des
Datensatzes.
Die Ereigniseigenschaft Beim Formatieren des Detailbereichs lautet =FormatStelle(); der Bericht hat kein eigenes
Modul. In einem Standardmodul:
Option Compare Database
Option Explicit
Public Function FormatStelle() As Variant
Dim r As Report, chart As Object, reached As Variant
On Error GoTo ErrorHandler
Set r = Reports("rptStellen")
Set chart = r!chtWand.Object
' The data of this record before the chart is drawn: needed for TrendReaches below.
chart.Requery
chart.ClearReferences
chart.AddReference r!txtSollMin, , "Soll-min", wskBad
reached = chart.TrendReaches(0, r!txtSollMin)
r!txtErreicht = IIf(IsNull(reached), "Trend erreicht Soll-min nicht", "Soll-min erreicht " & Format(reached, "mm/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("rptStellen")!txtErreicht = Err.Description
Resume FinalHandler
End Function
Um die Farben auf Papier zu erhalten, setzen Sie PrintStyle auf wpsColor (Eigenschaftenblatt oder Designer, Karte
PrintStyle). Sollen die Muster auch am Bildschirm erscheinen, für Leser, die sich nicht auf Farben verlassen
können, setzen Sie wpsPatterns.
Hinweise
- Unterstützte Ausgabe: die Seitenansicht und ein mit
DoCmd.OutputTogeschriebenes PDF, ein Bild mit Grenzwerten und Trend je Datensatz. Der direkte Druck auf einen Drucker gehört nicht zur unterstützten Ausgabe; ein Druckertreiber, der keine Alphaüberblendung meldet, erhält die Steuerelemente mit ihrem eigenen Hintergrund. - Ein Hauptfeld ohne Steuerelement wird als leer gelesen: Das Diagramm zeigt dann „Keine Daten“.
- Keine Ereignisse im Bericht: WKL-Steuerelemente lösen in einem Bericht keine Ereignisse aus (
DataLoaded,RangeChange…); verwenden Sie wie obenRequeryim Ereignis „Beim Formatieren“. - In einer ACCDE druckt derselbe Bericht ebenfalls, auch mit dem Ereignis „Beim Formatieren“ als Ausdruck.
WklKpiCardbehält ihr Kartenbild: Sie ist bewusst eine Kachel mit Rahmen. Ihr Status wird zusätzlich als Text ausgegeben, daher braucht sie keine Muster.