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: 

DatenfeldFelddatentyp
StatusNrZahl
SatusGrafikOLE-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: 

StatusnummerFarbeBedeutung
1RotZahlung ist überfällig
2GeldZahlung muss innerhalb der nächsten neun Tage erfolgen
3GrünZahlung 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.

Unsere Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

JETZT KONTAKTIEREN

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.

JETZT KONTAKTIEREN