Farbschema: Dunkel
Sie befinden sich hier: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Forms Object Library » how-to » Messanzeigen und Diagramme in einem Bericht drucken

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 WklGauge oder WklKpiCard im Detailbereich zeigt den Wert jedes Datensatzes an: Setzen Sie ihren Steuerelementinhalt wie bei einem Textfeld auf das Feld.
  • Ein WklChart im Detailbereich liest die Daten jedes Datensatzes selbst, über LinkMasterFields und LinkChildFields. Access übergibt einem Bericht nur die Felder, die an ein Steuerelement gebunden sind: Legen Sie das Hauptfeld (zum Beispiel ID) 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 Requery auf, wenn das Ereignis die Daten des Datensatzes benötigt, zum Beispiel für TrendReaches.
  • 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 Standardwert wpsAutomatic fü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 BackColor und 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.OutputTo geschriebenes 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 oben Requery im Ereignis „Beim Formatieren“.
  • In einer ACCDE druckt derselbe Bericht ebenfalls, auch mit dem Ereignis „Beim Formatieren“ als Ausdruck.
  • WklKpiCard behält ihr Kartenbild: Sie ist bewusst eine Kachel mit Rahmen. Ihr Status wird zusätzlich als Text ausgegeben, daher braucht sie keine Muster.

Verwandte Themen

de/wiki/msaccess/comctl/how-to/print-gauges-and-charts-in-a-report.txt · Zuletzt geändert: von Wolfgang van der Stille