Letzte Änderung am 24. Februar 2022 by Christoph Jüngling
Wer mit größeren Access-Projekten zu tun hat, weiß natürlich, dass es da manchmal drunter und drüber geht. Man entwirft, designt und programmiert was das Zeug hält, und manchmal verliert man regelrecht den Überblick. Da ist es mir auch schon passiert, dass ich eine Funktion erneut programmiert habe, die es längst gab, einfach weil ich sie nicht mehr gefunden habe! Das ist natürlich nicht gut, denn Code-Wiederverwendung ist ja ein wichtiger Aspekt bei der Entwicklung. Und wenn es um fremde Programme geht, die weiter gepflegt werden müssen, dann stehen wir vor noch ganz anderen Problemen. Da wäre eine richtig gute Suchfunktion schon eine tolle Sache.
Nun hat Access im VB-Editor ja schon von Anfang an eine Funktion für “Suchen und Ersetzen” implementiert. Die ist auch nicht unbedingt schlecht, gewissermaßen ein guter Grundstock. Immerhin kann man dort die Suche auf die aktuelle Prozedur, das aktuelle Modul oder Projekt oder den markierten Text einschränken sowie nach ganzen Wörtern suchen (oder nicht) und die Groß-/Kleinschreibung dabei beachten oder außen vor lassen. Auch die Suchrichtung kann man beeinflussen, und es gibt sogar einen Mustervergleich (aber keine Regular Expressions!). Wie gesagt, ein guter Grundstock, aber besonders toll ist das nicht. Doch was will man mehr?
Interessant ist zum Beispiel der Ansatz der MZ-Tools, die ich in diesem Artikel angesprochen habe. Deren Such- und Ersetzungsfunktion geht deutlich über das hinaus, was Access allein uns bietet. Hierbei kann ich zum Beispiel die Suche auf den reinen Code beschränken (also ohne Kommentare) und echte Regular Expressions (sogar mit Eingabehilfe!) verwenden, die Ergebnisse werden in einer hierarchischen Liste angezeigt und ein Export dieser Ergebnisse in eine Textdatei ist möglich – um nur einige Vorteile zu nennen. Doch auch hier stoßen wir an die Grenze, sobald die Suche mehr als nur den VBA-Code umfassen soll.
Das Suchen und Ersetzen im VBA-Code ist in einer Access-Datenbank natürlich nicht alles. Man könnte schließlich auch nach Tabellen, Feldern, Abfragen oder Steuerelementen auf Formularen und Berichten suchen wollen. Alles dies unterstützt Access mit Bordmitteln nicht, und auch die MZ-Tools kapitulieren hier.
Der Code als “letzte Grenze” für die Suchfunktion?
An dieser Stelle kommt das Tool “Find and Replace” in’s Spiel. Sicher gibt es zahlreiche gleichnamige Tools, aber ich meine ein bestimmtes. Es stammt aus der Feder meines Kollegen Philipp Stiefel, der zusammen mit Oliver Straub auf Access Dev Tools ein interessantes Ziel verfolgt. Der aufmerksame Leser kennt Phil vielleicht schon im Zusammenhang mit Ivercy. In seinem Blog-Artikel Why pay money for developer tools? beschreibt er den Gedanken (Übersetzung von mir):
Warum soll ich für dieses Entwicklerwerkzeug etwas bezahlen? Ich bin Entwickler, ich schreibe mir das einfach selbst!
Dabei wird auch deutlich, warum man am Ende vielleicht viel mehr dafür bezahlt, als gerade dieses eine Tool kostet. Und was kann es nun?
Der erste Unterschied zeigt sich bereits im Aufruf. Während die beiden zuvor genannten Werkzeuge nur im VBA-Editor funktionieren, wird Find and Replace über ein eigenes Ribbon “AccDevTools” im Access-Hauptfenster gestartet. In diesem Ribbon befinden sich die Buttons Suchen, Ersetzen und Einstellungen.
Der Suchen-Dialog präsentiert sich recht aufgeräumt. Groß-/Kleinschreibung und ganze Wörter sind auch hier möglich, es kann festgelegt werden wo gesucht wird und wie die Ausgabe der Ergebnisse erfolgen soll. Dann wird entweder die Einzelsuche oder “Alle suchen” gestartet. “Works as expected” würde ich mal sagen. Bei der Auswahl von “Liste” als Ausgabeziel erfolgt die Anzeige in tabellarischer Weise. Und da wird es interessant, denn hier sehen wir bereits, dass auch Tabellen und Formulare in meiner Testdatenbank durchsucht wurden. Denn der Begriff “Adressen”, nach dem ich gesucht habe, kommt mehrfach vor: Als Tabelle, als Formular, darin als RecordSource und Caption, und natürlich im Modulcode als Datenquelle für ein Recordset. Letzteres hätte auch Access und die MZ-Tools gefunden, aber eben nur dieses. Hier zeigt sich der eigentliche Vorteil des neuen Tools, da es die gesamte Datenbank betrachtet und nicht nur den VBA-Code.
Mit einem Doppelklick auf einen Eintrag wird dessen Ergebnis detaillierter angezeigt. Dabei wird der Suchbegriff farblich hervorgehoben. Leider geht es von hier aus nicht direkt zur Fundstelle. Dazu muss ich erst das Detailfenster schließen. Mittels Rechtsklick auf “Gehe zu” komme ich dann zu dem betreffenden Objekt. Das Formular wird im Entwurf geöffnet, der VBA-Code angesprungen und markiert. Meine persönliche Erwartungshaltung wäre allerdings umgekehrt: Doppelklick führt zum Objekt, Details per Rechtsklick. Aber darüber kann man streiten :-)
Falls die Liste zu umfangreich sein sollte, lässt sie sich mit einem Rechtsklick in einer Spalte auf Werte in eben dieser Spalte eingrenzen. Wichtig ist, dass der Rechtsklick in der gewünschten Spalte erfolgt!
Das Suchformular bleibt übrigens geöffnet bis ich es schließe, die Ergebnisse bleiben also erhalten und ich muss die Suche nicht unnötig oft durchführen. Leider ist es in der Größe nicht veränderbar, und auch individuell angepasste Spaltenbreiten bleiben über das Schließen des Ergebnisdialogs hinaus nicht erhalten. Aber das sind Kleinigkeiten, die a) nicht besonders stören und b) vielleicht in Zukunft noch ausprogrammiert werden.
“Find and Replace” von Phillip Stiefel und Oliver Straub kostet während der Einführungsphase nur 35,70 € incl. MwSt. und kann in seinem Shop bestellt werden. Phillip hat mir dieses Tool freundlicherweise kostenfrei zur Verfügung gestellt. Der Review wurde mit Version 1.0.13 unter Access 2019 und Windows 10 durchgeführt.
Update Oktober 2020: Inzwischen liegt der Preis einer einzelnen Lizenz bei 52,20 €.
Update Dezember 2020: Phil hat auf Youtube ein “Infomercial” veröffentlicht, in dem er neue Features der Version 1.1 vorstellt.
2 Kommentare
Hallo Chris!
Nochmal herzlichen Dank für das positive Review,
Über die Aktion beim Doppelklick in der Ergebnisliste braucht man nicht streiten. Unter “Einstellungen” kann man konfigurieren, was man lieber möchte.
Die Größe des Ergebnisliste-Fenster ist vergrößerbar, allerdings ist nur die untere rechte Ecke ein Griff zum ziehen.
Viele Grüße
Philipp
Autor
Na super, dann habe ich das nur nicht gefunden! Danke :-)