Datensätze farbig hervorheben
Veröffentlicht am 18.08.2005
Bei Berichten stellt Access eine spezielle Ereigniseigenschaft mit dem Namen BeimFormatieren zu Verfügung, um den Detailbereich eines Bericht für jeden Datensatz individuell zu formatieren. Dank dieser Eigenschaft ist es beispielsweise kein Problem, bestimmte Datensätze farbig hervorzuheben.
Leider steht bei Formularen keine solche Ereigniseigenschaft zur Verfügung, so das die beschrieben Formatierungen bei Endlosformularen nicht möglich sind. Auch der Versuch, die Hintergrundfarbe des Detailbereichs während der Laufzeit zu verändern, schlägt fehl. Die Änderung wirkt sich nämlich stets auf alle angezeigten Datensätze aus.
Um trotzdem einzelne Datensätze farbig hervorzuheben, verwenden Sie farbige OLE-Objekte, die relational mit einer Datentabelle verknüpft werden.
Die unten aufgeführte Abbildung zeigt, wie so etwas bei einer Rechnungsübersicht aussehen kann.
Voraussetzung für das Beispiel ist eine Tabelle mit dem Namen Status, in der die einzelnen OLE-Objekt zur Markierung der Datensätze angelegt werden. Die Tabelle enthält die beiden folgenden Datenfelder:
Datenfeld | Felddatentyp |
StatusNr | Zahl |
SatusGrafik | OLE-Objekt |
Das Feld StatusNr dient als Primärschlüssel der Tabelle.
In diesem Beispiel sollen die einzelnen Datensätze durch farbige Punkte markiert werden. Je nach Fälligkeit der Rechnung erscheint neben dem Datensatz ein grüner, gelber oder roter Punkt. Diese Punkte erstellen Sie am einfachsten mit Hilfe des Zeichenprogramms Paint, das zum Lieferumfang von Windows gehört. Das Einfügen der Objekt in das Feld StatusGrafik der Tabelle erledigen Sie über die Zwischenablage. Beachten Sie außerdem die folgende Zuordnung der Farbigkeit zu einer Statusnummer:
Statusnummer | Farbe | Bedeutung |
1 | Rot | Zahlung ist überfällig |
2 | Geld | Zahlung muss innerhalb der nächsten neun Tage erfolgen |
3 | Grün | Zahlung erst in mehr als neun Tagen |
Die zweite für das Beispiel erforderliche Tabelle heißt Rechnungen. Sie speichert einige für die zu bezahlenden Rechnungen interessante Daten. Für das Beispiel kommt es nur auf das Feld Zahlungsdatum an, da die Dringlichkeit einer Zahlung durch das Verhältnis vom Tages- zum Zahlungsdatum ermittelt wird.
Die Bewertung der Zahlungsdringlichkeit übernimmt eine VBA-Funktion namens StatusBestimmen. Die Prozedur erwartet das Zahlungsdatum als Parameter und gibt einen der Stati 1 bis 3 nach obiger Tabelle zurück. Geben Sie die VBA-Funktion in ein beliebiges Standardmodul ein:
Public Function StatusBestimmen(Zahlungsdatum As Variant) As Integer
Dim DifferenzInTagen As Integer
If IsNull(Zahlungsdatum) Then Exit Function
DifferenzInTagen = DateDiff("d", Date, Zahlungsdatum)
If DifferenzInTagen < 0 Then StatusBestimmen = 1 'Rot
If DifferenzInTagen >= 0 And DifferenzInTagen < 10 _
Then StatusBestimmen = 2 'Gelb
If DifferenzInTagen >= 10 Then StatusBestimmen = 3 'Grün
End Function
Bevor Sie die Tabellen Rechnungen und Status in einer Abfrage miteinander verknüpfen können, benötigen Sie in der Tabelle Rechnungen ein entsprechendes Datenfeld, dessen Werte mit der Statusnummer aus der Tabelle Statusübereinstimmen. Der Entwurf eines solchen Datenfeldes erfolgt am einfachsten in einer Abfrage. Fügen Sie einer neuen Abfrage die Tabelle Rechnungen hinzu, und ziehen Sie das Sternchen aus der Feldliste in den Entwurfsbereich. Fügen Sie dann die folgende Spalte hinzu:
Status: StatusBestimmen([Zahlungsdatum])
Dieser Ausdruck definiert das neue Feld Status, dessen Wert sich aus der Berechnung der VBA-Funktion StatusBestimmen und dem aktuellen Zahlungsdatum ergibt. Speichern Sie die Abfrage unter dem Namen Rechnungen mit Status.
In einer zweiten Abfrage führen Sie die Tabellen Rechnungen und Status nun zusammen. Entwerfen Sie eine Abfrage und fügen Sie die Tabelle Status und die Abfrage Rechnungen mit Status hinzu. Die Verknüpfung der beiden Feldlisten erfolgt über eine Linie, die Sie vom Feld StatusNr der Tabelle Status auf das Feld Status der Abfrage Rechnungen mit Status ziehen. Um die Abfrage zu vervollständigen, ziehen Sie das Sternchen aus der Abfrage Rechnungen mit Status und das Feld StatusGrafik aus der Tabelle Status in den Entwurfsbereich.
Nachdem Sie die Abfrage unter dem Namen Formular Rechnungsübersicht gespeichert haben, können Sie sie als Datenherkunft für ein neues Endlosformular verwenden. Der Entwurf des Formulars erfolgt am einfachsten mit einem der Formularassistenten von Access. Als Ergebnis erhalten Sie eine Ansicht von mehreren Datensätzen, die jeweils gemäß der Dringlichkeit der Zahlung farbig markiert sind.
Aufgrund der Konzeption als relationale Verknüpfung von Tabellen, läßt sich dieses Beispiel problemlos erweitern. Sie müssen lediglich weitere farbige Objekte in der Tabelle Status speichern und die VBA-Funktion StatusBestimmenentsprechend erweitern.
