Berichte und Reporting
Wie seinen Rechner, sein Auto oder das Design seiner Internetseite wird man gelegentlich auch mal das Aussehen seines Briefkopfes leid und tauscht diesen kurzerhand aus. Kurzerhand Nicht wirklich: Wenn Sie etwa mehrere Access-Anwendungen anpassen müssen, die wiederum mehrere Berichte mit Ihrem Briefkopf enthalten, wartet eine Menge Handarbeit auf Sie.
Dabei geht es doch viel leichter: Erstellen Sie doch einfach einen Unterbericht mit dem Briefkopf und fügen Sie diesen in alle anderen Berichte, die einen Briefkopf benötigen, ein. Damit brauchen Sie änderungen nur noch an einer Stelle vorzunehmen. Selbst wenn Sie mehrere Anwendungen haben, die Berichte mit einem Briefkopf enthalten, ist die Aufgabe schnell erledigt, denn Sie müssen ja nur den angepassten Bericht mit dem Briefkopf in alle relevanten Access-Datenbanken kopieren.
Und so funktioniert es: Legen Sie einen Bericht an und platzieren Sie darin die Elemente Ihres Briefkopfes. Entfernen Sie die Berichtskopfelemente aus einem vorhandenen Bericht. Fügen Sie dann den Bericht mit dem Briefkopf in den Zielbericht ein – das geht am einfachsten, wenn Sie den Zielbericht in der Entwurfsansicht öffnen und den einzufügenden Bericht aus dem Datenbankfenster an die gewünschte Stelle des Zielberichts ziehen.
VBA und Programmiertechnik
Wer keine Arbeit hat, der macht sich welche. Zum Beispiel, indem er funktionierende Codepassagen aus einer Routine in eine andere Routine kopiert. Funktioniert per Copy and Paste und liefert auch funktionell das gewünschte Ergebnis.
Manchmal programmiert man auch unbewusst an zwei Stellen innerhalb des gleichen Moduls oder zumindest innerhalb der gleichen Anwendung Codezeilen, die entweder völlig identisch sind oder zumindest genau die gleiche Funktion haben. Stehen dann einmal änderungen innerhalb dieser Code-Dubletten an, hat man direkt die doppelte (oder x-fache) Arbeit: Jede änderung müssen Sie an mehreren Stellen durchführen, damit alles wieder wie gewünscht funktioniert. Dabei lassen sich solche Probleme ganz einfach lösen: “Klammern” Sie den doppelten Code einfach aus, indem Sie ihn in einer eigenen Routine anlegen und von den ursprünglichen Routinen darauf verweisen. Im einfachsten Fall funktioniert das nach dem folgenden Schema: Nehmen wir an, dass Sie bei bestimmten Aktionen eine Reihe von Steuerelementen in einem Formular aktivieren oder deaktivieren möchten und dass a im ganzen Modul bekannt ist:
Private Form_Load() If a Then Me!txt1.Enabled = True Me!txt2.Enabled = True Me!txt3.Enabled = True Else Me!txt1.Enabled = False Me!txt2.Enabled = False Me!txt3.Enabled = False End If ... End Sub Private cmdBeispiel_Click() If a Then Me!txt1.Enabled = True ... End Sub
Wenn Sie dies nun bei verschiedenen Gelegenheiten tun – etwa beim öffnen des Formulars, beim Anzeigen eines neuen Datensatzes oder beim Klick auf eine bestimmte Schaltfläche – haben Sie den gleichen Code an mehreren Stellen stehen. Kommt nun noch ein weiteres Steuerelement hinzu, müssen Sie den Code an mehreren Stellen anpassen. Stattdessen erstellen Sie eine neue Funktion mit einem sinnvollen Namen, etwa SteuerelementeAnpassen.
Private Sub SteuerelementeAnpassen If a Then Me!txt1.Enabled = True Me!txt2.Enabled = True Me!txt3.Enabled = True Else Me!txt1.Enabled = False Me!txt2.Enabled = False Me!txt3.Enabled = False End If End Sub
Ersetzen Sie dann diese “extrahierten” Zeilen an allen betroffenen Stellen durch einen einfachen Aufruf der neuen Routine SteuerelementeAnpassen, etwa so:
Private Form_Load() SteuerelementeAnpassen ... End Sub Private cmdBeispiel_Click() SteuerelementeAnpassen ... End Sub
Nun können Steuerelemente hinzukommen oder wegfallen, wie sie wollen, die Anpassung müssen Sie immer nur an einer Stelle vornehmen.