Home > Artikel > Ausgabe 6/2018 > Suchen und ersetzen per Access-Dialog

Suchen und ersetzen per Access-Dialog

  PDF ansehen

  Download PDF und Beispieldatenbank

Der Access-Dialog zum Suchen und Ersetzen in Tabellen, Abfragen und Formularen ist eine praktische Sache. Aber man nutzt ihn viel zu selten! Das wollen wir ändern, indem wir in diesem Artikel einmal ausführlich auf diesen praktischen Dialog eingehen. Dabei zeigen wir nicht nur, wie Sie diesen bedienen, sondern auch, wie Sie ihn per VBA öffnen und einige der Voreinstellungen bereits vorab anpassen können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1805_SuchenUndErsetzen.accdb.

Suchen und Ersetzen in Datenblättern

Zum Suchen und Ersetzen in Datenblättern benötigen Sie im Prinzip nur eine einfache Tastenkombination, nämlich Strg + F. Damit öffnen Sie den Suchen und Ersetzen-Dialog.

Dieser zeigt, wenn Sie zuvor den Inhalt oder einen Teilinhalt im markierten Feld markiert hatten, auch gleich den markierten Text im Feld Suchen nach an (siehe Bild 1). Unter dem Feld zur Eingabe des Suchbegriffs finden Sie einige weitere Optionen. Die erste namens Suchen in legt fest, wo genau gesucht werden soll.

Aufruf des Suchen und Ersetzen-Dialogs

Bild 1: Aufruf des Suchen und Ersetzen-Dialogs

Die Optionen lauten:

  • Aktuelles Feld: Durchsucht nur im aktuell markierten Feld nach dem Suchbegriff.
  • Aktuelles Dokument: Durchsucht alle Felder des aktuellen Dokuments, wobei Dokument eine Tabelle oder Abfrage in der Datenblattansicht oder ein Formular in beliebiger Ansicht bedeutet.

Die Option Vergleichen lässt gleich drei verschiedene Werte zu (siehe Bild 2):

Spezifizieren des Vergleichs

Bild 2: Spezifizieren des Vergleichs

  • Teil des Feldinhaltes: Sucht an beliebiger Stelle innerhalb der Inhalte des Feldes nach dem Suchbegriff. Der Suchbegriff ha würde also etwa Chai oder Chang als Ergebnis liefern.
  • Ganzes Feld: Vergleicht den Suchbegriff mit dem kompletten Feldinhalt, der Suchbegriff Chai trifft also nur, wenn das Feld exakt den Text Chai enthält.
  • Anfang des Feldinhaltes: Liefert nur Ergebnisse, bei denen der Feldinhalt mit dem Suchbegriff beginnt. Bei Ch also auch wieder Chai oder Chang.

Mit dem Feld Suchen legen Sie schließlich noch fest, ob aufwärts, abwärts oder überall gesucht werden soll.

Die Option Groß-/Kleinschreibung beachten gibt an, ob bei der Suche auf Groß-/Kleinschreibung geachtet werden soll. Ist diese Option aktiviert, findet der Suchbegriff chai zum Beispiel nicht Chai.

Formatierung beachten schließlich ist eine recht komplizierte Option. Das liegt auch daran, dass diese scheinbar willkürlich aktiviert oder deaktiviert wird. Schauen wir uns das an Beispielen an.

Wenn Sie in der Tabelle tblArtikel das Feld ArtikelID markieren und dann den Suchen und Ersetzen-Dialog öffnen, ist die Option selektiert, aber aktiviert, sodass Sie diese Einstellung ändern können.

Schließen Sie den Suchen und Ersetzen-Dialog und markieren Sie ein Feld in der Spalte Artikelname. Öffnen Sie den Suchen und Ersetzen-Dialog erneut. Die Option Formatierung beachten ist wiederum aktiviert und selektiert. Aktivieren Sie nun die Option Groß-/Kleinschreibung beachten, wird die Option Formatierung beachten jedoch deaktiviert, bleibt aber selektiert.

Die Eigenschaft »Formatierung beachten«

Schließlich schauen wir uns an, was geschieht, wenn wir ein Feld der Spalte Lieferant markieren und den Suchen und Ersetzen-Dialog öffnen. Nun ist die Option Formatierung beachten selektiert, aber deaktiviert! Was bedeutet dies nun?

Eigentlich ist diese Option für das Händeln von Eingabeformaten bei der Suche vorgesehen. Sie können ja für ein Feld verschiedene Eingabeformate festlegen (wie das geht, habe ich im Artikel Eingabeformate beschrieben). Ich nutze dieses Feature nie, aber zu Beispielzwecken fügen wir einfach ein Feld namens HaltbarBis zur Tabelle tblArtikel hinzu. Diesem weisen wir den Datentyp Kurzer Text und als Eingabeformat den Ausdruck 00\/0000;0;"_" zu. Für ein weiteres Feld namens HergestelltAm legen wir dieses Eingabeformat fest: 00\/0000;-1;"_" (siehe Bild 3). Der Unterschied ist, dass Ersteres die eingegebenen Zeichen mit den im Eingabeformat definierten Literalen speichert, Letzteres speichert nur die eingegebenen Zeichen ohne die Literale des Eingabeformats.

Spezifizieren des Eingabeformats

Bild 3: Spezifizieren des Eingabeformats

Nun schauen wir uns an, wie sich unterschiedliche Einstellungen der Eigenschaft Formatierung beachten auswirken. Als Erstes durchsuchen wir das Feld HaltbarBis, in dem wir die Literale des Eingabeformats mit im Feld speichern, also etwa 01/2018. Wir aktivieren Formatierung beachten und suchen nach 01/2018. Diesen Eintrag finden wir problemlos. Nun entfernen wir den Haken für die Eigenschaft Formatierung beachten und suchen erneut. Auch diesmal findet Access den gewünschten Eintrag. Wenn wir in diesem Feld nach dem Eintrag ohne die Literale des Eingabeformats suchen, also etwa nach 012018, finden wir nichts – unabhängig davon, ob Formatierung beachten aktiviert ist oder nicht.

Danach durchsuchen wir das Feld HergestelltAm, dass seine Werte zwar als 01/2019 anzeigt, aber als 012019 speichert:

  • Wir aktivieren wieder Formatierung beachten und suchen nach 01/2018. Der Eintrag wird gefunden.
  • Wir suchen bei gleicher Einstellung nach 012018, also ohne Literale. Es wird kein Wert gefunden.
  • Nun deaktivieren wir Formatierung beachten und suchen nach 01/2018. Es wird kein Ergebnis gefunden.
  • Nun suchen wir bei gleicher Einstellung nach 012018. Diesmal wird der passende Datensatz gefunden.

Zusammengefasst bedeutet dies: Wenn die Daten im angezeigten Format gespeichert werden, findet Access nur Werte, die dem angezeigten und so gespeicherten Inhalt entsprechen. Wenn die Daten ohne Literale des Eingabeformats gespeichert werden, findet man bei aktivierter Eigenschaft Formatierung beachten die angezeigten Werte (zum Beispiel 01/2018) und bei deaktivierter Eigenschaft Formatierung beachten die gespeicherten Werte, also etwa 012018.

Aufrufen per VBA

Wenn Sie den Dialog per VBA aufrufen wollen, können Sie das über die Methode RunCommand des Application-Objekts mit dem entsprechenden Parameter erledigen.

Für den Suchen und Ersetzen-Dialog mit aktivierter Suchen-Registerseite verwenden Sie etwa den folgenden Aufruf:

Application.RunCommand acCmdFind

Um gleich die Ersetzen-Seite zu aktivieren, nutzen Sie diesen Parameter:

Application.RunCommand acCmdReplace

Standardeinstellungen für den Suchen und Ersetzen-Dialog

Vielleicht haben Sie sich auch gefragt, ob es die Möglichkeit gibt, eine oder mehrere Optionen des Dialogs entweder per VBA oder auch per Option auf einen anderen Standardwert zu ändern. Die Logik für die Option Suchen in ist ja schon ordentlich – sie wird auf Aktuelles Feld eingestellt, wenn nur ein Feld oder eine Spalte des Datenblatts markiert ist und aus Aktuelles Dokument, wenn der Benutzer beim Aufruf des Suchen und Ersetzen-Dialogs zwei oder mehr Spalten selektiert hat.

Die Einstellung für die Option Suchen bleibt jeweils auf dem Wert stehen, den der Benutzer eingestellt hat – auch wenn Sie den Suchen und Ersetzen-Dialog schließen und wieder öffnen.

Was aber ist mit der Option Vergleichen? Diese reagiert weder auf die beim Aufruf des Suchen und Ersetzen-Dialogs vorliegende Konstellation noch bleibt die Änderung des Optionswertes erhalten, wenn Sie den Dialog schließen und wieder öffnen. Die beim Öffnen vorgefundene Einstellung wird nach jedem Öffnen erneut angezeigt.

Die Lösung des Rätsels um diese Einstellung ist einfach: Es gibt einen Eintrag in den Access-Optionen für diese Einstellung! Um diese vorzunehmen, rufen Sie einfach die Access-Optionen auf und wechseln zum Bereich Clienteinstellungen. Hier gibt es unter Bearbeiten die Option Suchen/Ersetzen-Standard mit den Werten Schnelle Suche, Allgemeine Suche und Feldanfang-Suche (siehe Bild 4).

Optionen für die Suche

Bild 4: Optionen für die Suche

Was bedeuten die Einstellungen nun? Sie lassen sich ja nicht unmittelbar mit den Werten der Option Vergleichen in Zusammenhang bringen. Also schauen wir uns das einmal im Detail an. Dazu stellen wir die Access-Option auf Schnelle Suche ein und schließen die Access-Optionen wieder. Danach öffnen wir den Suchen und Ersetzen-Dialog. Vielleicht war bei Ihnen zuvor die gleiche Einstellung vorhanden und der Dialog zeigt nun den Wert Ganzes Feld für die Option Vergleichen an. Grundsätzlich dürfte sich die Einstellung dieses Wertes jedoch nicht geändert haben, nachdem wir die Access-Option angepasst haben.

Das hat einen einfachen Grund: Die Option Suchen/Ersetzen-Standard ist eine der Optionen, die sich erst nach dem Schließen und erneutem Öffnen der Access-Anwendung auswirkt. Das ist nicht zu verwechseln mit dem Schließen und Öffnen der Datenbankdatei – dies ändert noch nichts! Wenn wir also nun Access beenden und neu starten, erhalten wir die Einstellung aus Bild 5 für die Eigenschaft Vergleichen.

Vergleichen-Einstellung für die Access-Option Schnelle Suche

Bild 5: Vergleichen-Einstellung für die Access-Option Schnelle Suche

Nun öffnen wir erneut die Access-Optionen und stellen Suchen/Ersetzen-Standard auf Allgemeine Suche ein. Nach dem Beenden und Starten von Access liefert der Suchen und Ersetzen-Dialog nun den Wert Teil des Feldinhaltes. Interessant: Nun wird auch die Einstellung für Suchen in automatisch auf Aktuelles Dokument eingestellt – auch, wenn Sie nur ein einziges Feld markiert haben.

Schließlich probieren wir noch die Einstellung Feldanfang-Suche für die Access-Option Suchen/Ersetzen-Standard aus. Hier finden wir endlich einmal eine Korrelation zwischen den Werten für die Access-Option und die Suchen und Ersetzen-Option: Im Suchen und Ersetzen-Dialog finden wir nämlich nun den Wert Anfang des Feldinhalts vor. Außerdem wird Suchen in wieder automatisch entsprechend der Anzahl der markierten Spalten auf Aktuelles Feld oder Aktuelles Dokument eingestellt.

Wenn Sie dafür sorgen wollen, dass der von Ihnen gewünschte Wert standardmäßig auf der Client-Maschine eingestellt wird, können Sie diesen Wert auch per VBA einstellen. Dies gelingt mit der Anweisung SetOption, die Sie in diesem Fall wie folgt einsetzen – hier etwa für den Wert Schnelle Suche:

Application.SetOption "Default Find/Replace Behavior", 0

Die Werte für Allgemeine Suche und Feldanfang-Suche lauten 1 und 2. Auch wenn es im Internet Hinweise darauf gibt, dass man diese Einstellungen beim Öffnen eines Formulars festzulegen und direkt die neuen Einstellungen zu sehen – mit der aktuellen Version Access 2016 gelingt dies nicht. Sie müssen also auch nach der Einstellung dieser Option per Code zunächst noch einmal Access beenden und erneut starten.