Zum Inhalt springen

Nicht angezeigte bedingte Formatierung in einem Bericht in Microsoft Access 2016

Szenario

Sie haben eine (beliebig komplexe oder beliebig einfache) Access-Datenbank auf ihrem Rechner lokal laufen und bearbeiten auch allein die Daten.

In einem Bericht habe ich verschiedene bedingte Formatierungen festgelegt, wie hier beispielhaft dargestellt, und habe seit Monaten damit einwandfrei gearbeitet:

funktionierende bedingte Formatierung, Bildschirmfoto: Andreas Schwalmberger

Doch plötzlich konnte ich nach einem Neustart der Datenbank (also des Programms Microsoft Access) nur noch mit Verwunderung feststellen, das diese Definition der Regeln für die bedingte Formatierung anscheinend plötzlich aus unbekannten Gründen ohne mein Zutun funktionslos geworden ist (ich wunderte mich schon, warum manche Berichte nach einer Filterung nicht mehr so viele rote, überlaufende Notiz-Einträge hatten):

nicht mehr angezeigte / funktionierende bedingte Formatierung, Bildschirmfoto: Andreas Schwalmberger

Dass ich dies erkannt habe, liegt daran, da die bedingte Formatierung wie erwähnt bereits monatelang einwandfrei funktioniert hatte. Wenn man das Bildschirmfoto genauer ansieht, stellt man fest, dass auch die Schriftart sich etwas verändert hat; dies liegt an der bedingten Formatierungsregel.

Wenn man neu auf dem Gebiet ist und eine bedingte Formatierung erstmalig einrichtet und diese auf einmal nicht mehr funktioniert, kann das schon ziemlich zeitaufwändig werden und frustrierend sein. Denn man sucht ja zuerst mal den Fehler bei sich und wundert sich, warum die Formatierung nicht angezeigt wird; dabei hat man im Prinzip doch alles richtig gemacht. Wenn mehrere User mit dieser Datenbank arbeiten, geht das Fehlersuchen erst richtig los.

Dabei war die Fehlersuche und das Auffinden eines Workarounds mehr als zeitaufwändig…

Erste Erkenntnis und Workaround

Erstaunlich ist bei diesem Fehler, dass er mit einem wirklich seltsam anmutenden Workaround (vorrübergehend bis zum nächsten Neustart der Datenbank) gelöst werden kann.

Dabei muss man in die Entwurfsansicht gehen und ein Feld markieren:

Entwurfsansicht im Bericht, Bildschirmfoto: Andreas Schwalmberger

Dann schneidet man dieses Feld aus (Strg + x):

entferntes Feld, Bildschirmfoto: Andreas Schwalmberger

Dann wird das Feld wieder eingefügt und an die vorherige Stelle gezogen:

wieder eingefügtes Feld, Bildschirmfoto: Andreas Schwalmberger

Nunmehr wird die “Änderung” gespeichert und der Entwurfsmodus verlassen, und siehe da, plötzlich wird die bedingte Formatierung wieder einwandfrei wie gewünscht angezeigt:

wieder funktionierende bedingte Formatierung, Bildschirmfoto: Andreas Schwalmberger

Das erstaunliche dabei ist, dass nicht mal eines der Felder mit einer bedingten Formatierung für dieses Vorgehen gewählt werden muss, sondern jedes andere beliebige Feld im betreffenden Bericht ausgeschnitten und wieder eingefügt werden kann, beispielsweise ein einfaches Textfeld im Berichtskopf, bei mir sieht das so mal so aus:

einfaches beispielhaftes Textfeld, Bildschirmfoto: Andreas Schwalmberger

Es scheint, dass dann Access nach dem Speichern wieder in einen anderen “Modus” fällt, bei dem die bedingte Formatierung wieder funktioniert / angezeigt wird. Ein Ausschneiden und Wiedereinfügen und anschließendes Speichern kann diesen Modus anscheinend reaktivieren.

Nach einem Neustart der Datenbank ist, wie erwartet, leider alles wieder auf Anfang:

ohne angezeigte bedingte Formatierung nach Neustart, Bildschirmfoto: Andreas Schwalmberger

Bei einem anderen Bericht trat dieser Fehler ebenfalls monatelang auf und war dann wieder verschwunden. Leider weiß ich nicht mehr genau, was seitdem verändert wurde.

Bei einer ähnlichen Datenbank, bei der ich ebenfalls diese bedingten Formatierungsregeln verwende, habe ich noch nie derartige Phänomene feststellen können. Es scheind also an einer Kombination von mehreren Faktoren liegen.

Update

2 Tage nachdem ich diese Dokumentation geschrieben hatte, funktioniert die Anzeige am Montag Morgen unerwartet wieder einwandfrei, die Formatierung wird angezeigt.

Gut, seitdem ist ein Wochenende vergangen, aber kann es daran liegen?

Nach einem Datenbank-Neustart zeigt sich wieder das gleiche Problem.

Auch der im Internet oft zu findende Hinweis mit der Wahl des sog. “Hintergrundfarbe –> automatisch” liefert hier keine Lösung, funktioniert jedoch testweise bei den entsprechend dafür angedachten Feldern, bei denen oftmals auch keine Funktion der bedingten Formatierung zu erkennen ist:

Auswahl von “Hintergrundfarbe automatisch” bei fehlender bedingter Formatierung; Bildschirmfoto: Andreas Schwalmberger

Fehlerursachen-Eingrenzung

Neue Erkenntnisse: Eine radikale Reduzierung der Datenbankgröße (konkret: Löschung von Datensätzen) lässt die bedingte Formatierung wieder funktionieren, diesmal dauerhaft.

vorher: 418 Datensätze in Hauptdatenbank, ca. 300 MB Datei-Größe; nachher: 1 Datensatz

Es funktioniert auch noch mit 179 Datensätzen, vermutlich auch darunter / darüber. Es gibt anscheinend einen Kipppunkt, bei dem es entweder funktioniert oder eben nicht mehr.

Zwar ist Access dafür bekannt, nicht sehr speichereffizient mit Daten- und Mediendateien umzugehen, aber dass dann die bedingte Formatierung entweder funktioniert oder nicht ist schon erstaunlich.

Zumindest konnte keine andere Ursache identifiziert werden, doch wer will schon Datensätze löschen, nur damit die bedingte Formatierung wieder funktioniert?

Auch der Befehl im Menü “reparieren und komprimieren” hilft nicht weiter.

Ursachen

Noch nicht bekannt (März 2024).

Lösung

Ausführung des Befehls “decompile”

ACHTUNG: Vorher unbedingt Sicherungskopie anlegen, denn der Befehl “decompile” ist meines Wissens nicht offiziell dokumentiert und kann dazu führen, dass die Datenbank gar nicht mehr startet.

Ausführen des Befehls über eine Eingabeaufforderung (Ordner-Pfade sind entsprechend anzupassen):

"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /decompile "C:\data\work\Objektverwaltung\Objektverwaltung.accdb"

Lt. verschiedenen Informationen zu diesem Befehl, die im Internet zu finden sind, “repariert” der Befehl “decompile” den VBA-Code bzw. P-Code der Datenbank. Anscheinend hängen interner P-Code und bedingte Formatierung sowie Datenbankgröße irgendwie zusammen.

Anschließend funktioniert die bedingte Formatierung auch nach einem Neustart der Datenbank.