Nicht nur für Datenblätter, sondern auch für die Endlosansicht ist diese Lösung interessant: Sie erfahren hier, wie Sie die gesuchten Elemente in einer Listenansicht farbig hervorheben und somit das Suchergebnis sehen, ohne die übrigen Einträge herausfiltern zu müssen. Das alles funktioniert dank der bedingten Formatierung von Access.
Wäre es nicht schön, wenn Sie das Suchergebnis in der Datenblattansicht oder in der Endlosansicht gleich farbig hervorheben könnten, statt nur alle gefundenen Einträge anzuzeigen und die übrigen auszublenden (s. Bild 1) Sicher hat letztere Variante eine Daseinsberechtigung, aber es gibt sicher Anwendungsfälle, in denen Sie einfach mal die gesuchten Elemente neben den übrigen farbig hervorheben möchten.
Bild 1: Farbig markiertes Suchergebnis
Beispielformular
Um das Beispiel aus der Abbildung zu reproduzieren, brauchen Sie zunächst ein Haupt- und ein Unterformular, wobei das Unterformular sfmArtikel heißt an die Tabelle mit den gewünschten Daten gebunden ist (in diesem Fall an die Tabelle tblArtikel der Südsturm-Datenbank).
Fügen Sie alle Felder zur Entwurfsansicht hinzu und stellen Sie die Standardansicht auf Datenblatt ein. Nun erstellen Sie das Hauptformular frmArtikel und fügen das Unterformular hinzu. Außerdem benötigen Sie ein Feld zur Eingabe des gesuchten Ausdrucks.
Dieses Textfeld benennen Sie txtArtikelsuche. Legen Sie außerdem eine Ereignisprozedur für dieses Steuerelement an, das durch das Ereignis Bei änderung ausgelöst wird (s. Bild 2).
Bild 2: Dieses Ereignis sorgt für das Markieren des Suchergebnisses
Erreichen wollen wir eine bedingte Formatierung, wie wir sie auch über den entsprechenden Dialog des Steuerelements einstellen können (s. Bild 3, hier unter Access 2010). Es soll also ein Ausdruck eingestellt werden, für den der Hintergrund des Steuerelements in diesem Fall orange eingefärbt werden soll.
Bild 3: So sollen die Eigenschaften der bedingten Formatierung aussehen
Programmierung
Die eigentliche Arbeit erledigt dabei die Prozedur aus Listing 1. Sie deklariert zunächst drei Objekte:
Listing 1: Dynamisches Anpassen der bedingten Formatierung
Private Sub txtArtikelsuche_Change() Dim objFormatCondition As FormatCondition Dim txt As TextBox Dim str As String str = Me!txtArtikelsuche.Text Set txt = Me!sfmArtikel.Form!Artikelname If txt.FormatConditions.Count > 0 Then txt.FormatConditions(0).Delete If Not Len(str) = 0 Then Set objFormatCondition = txt.FormatConditions.Add(acExpression, acEqual, _ "[Artikelname] Like ''" & str & "''") With objFormatCondition .BackColor = 967423 End With End If End Sub
- objFormatCondition: Speichert einen Verweis auf die später angelegte bedingte Formatierung, um deren Eigenschaften einstellen zu können
- txt: Enthält einen Verweis auf das Steuerelement, dessen bedingte Formatierung geändert werden soll
- str: Nimmt den Ausdruck auf, der als Kriterium für die bedingte Formatierung dient