Code-Bibliotheken

Wer bereits eine Reihe von Projekten durchgeführt hat, verfügt in der Regel über einen Fundus immer wiederkehrender Elemente wie Prozeduren, Module oder Klassen. Diese kopiert man dann von bestehenden in neue Datenbanken und kann so getestete, funktionierende Elemente weiternutzen. Aber was ist, wenn man in einer Datenbank Fehler an einem solchen Element findet und behebt oder das Element gar weiterentwickelt Wie gewährleistet man, dass die übrigen Anwendungen, die dieses Element verwenden, auch davon profitieren Dies gelingt zum Beispiel durch den Einsatz von Code-Bibliotheken. Wie dieser in der Praxis aussieht, erfahren Sie in diesem Beitrag.

Auch wer nur ganz wenige Zeilen seines Codes in anderen Anwendungen weiterverwendet: Standardfunktionen wie etwa zum Ermitteln eines SQL-formatierten Datums (#2010/10/01#) oder FLookup und Co. (schnellere Varianten der eingebauten Domänenfunktionen) oder ähnliche wird wohl jeder Entwickler bereits einmal aus einer Anwendung kopiert und in eine weitere Anwendung eingefügt haben.

Hin und wieder zeigt sich jedoch, dass das eine oder andere Element nicht wie gewünscht funktioniert oder gar Fehler verursacht. Nach der änderung der verantwortlichen Codezeilen tritt der Fehler nicht mehr auf – aber nur in der Anwendung, in der Sie ihn behoben haben.

Also ermitteln Sie alle Anwendungen, in denen die entsprechende Funktion noch vorkommt, was je nach Verbreitung gar nicht so einfach ist, und beheben den Fehler an allen betroffenen Stellen.

Noch interessanter wird es, wenn Sie komplette Sätze, bestehend aus Elementen wie Tabellen, Abfragen, Formularen, Standard- und Klassenmodulen, immer wieder verwenden und diese wiederum auf gemeinsame Elemente zugreifen.

Ein Beispiel ist ein Modul mit einer einfachen Funktion zur Fehlerbehandlung. Wenn alle Elemente in der gleichen Datenbankdatei stecken, können auch alle auf die gleiche Fehlerbehandlung zugreifen.

Wenn Sie nun einen Satz von Elementen (eine Komponente), der auch die Fehlerbehandlung verwendet, von Anwendung A nach Anwendung B kopieren, läuft alles rund.

Wenn Sie jetzt einen anderen Satz von Elementen von Anwendung C nach Anwendung B importieren, der die gleiche Fehlerbehandlung verwendet, ist diese doppelt vorhanden, was einen Kompilierfehler auslöst.

Dies ist kein Problem, wenn Sie die Komponenten komplett in eigene Datenbankdateien auslagern und diese von den eigentlichen Datenbank-Anwendungen aus referenzieren: Jede Komponente kann dann ihre eigene Fehlerbehandlung verwenden.

Oder, um das Spiel noch ein wenig weiterzutreiben: Die Fehlerbehandlung wird ihrerseits in eine weitere Datenbankdatei ausgelagert und von allen anderen Komponenten und auch von der Hauptanwendung referenziert.

Und damit kommen wir zum Thema Codebibliotheken: Darunter versteht man im Allgemeinen herkömmliche Datenbankdateien, die über den Verweise-Dialog in die Hauptanwendung eingebunden werden.

Bibliothek erstellen

Als Bibliothek verwenden Sie eine herkömmliche Access-Datenbank (in den Beispieldateien heißt diese DBMitBibliothek.mdb).

Legen Sie fest, welche Access-Versionen auf diese Bibliothek zugreifen sollen und verwenden Sie die kleinste Version als Datenbankformat (viele verwenden noch Access 2000, weshalb dies größtmögliche Kompatibilität bietet – aber beachten Sie, dass beispielsweise nicht alle VBA-Befehle hiermit funktionieren).

Elemente, die Sie in anderen Datenbanken verwenden möchten, müssen als Public deklariert werden. Beginnen wir mit einer kleinen Beispielfunktion namens BibMsgBox, die wie folgt aussieht und in einem Standardmodul namens mdlBibliothek landet:

Public Sub BibMsgBox()
    MsgBox "Meldung aus der Bibliothek"
End Sub

Die Prozedur zeigt ein einfaches Meldungsfenster an. Damit die Bibliothek beim Einbinden in andere Datenbanken keinen Konflikt auslöst, vergeben Sie einen eindeutigen Namen für das VBA-Projekt. Dies erledigen Sie in den Projekteigenschaften (Extras|Projekteigenschaften, s. Bild 1).

pic001.png

Bild 1: Einstellen des Namens eines VBA-Projekts

Bibliothek referenzieren

Nun öffnen oder erstellen Sie die Datenbank, welche die in der Bibliothek befindliche Routine aufrufen soll. Dort müssen Sie die Bibliothek zunächst referenzieren, was Sie über den Verweise-Dialog erledigen.

Aktivieren Sie mit Alt + F11 den VBA-Editor und wählen Sie den Menüeintrag Extras|Verweise aus. Klicken Sie auf Durchsuchen und wählen Sie die soeben erstellte Bibliotheksdatenbank aus. Diese erscheint anschließend in der Liste der Verweise (s. Bild 2).

pic002.png

Bild 2: Ein Verweis auf eine Bibliotheksdatenbank

Sollte dies nicht der Fall sein, ist möglicherweise im Projekt-Explorer des VBA-Editors das falsche Projekt aktiviert. Der Projekt-Explorer zeigt nämlich nach dem Einbinden der Bibliothek nicht mehr nur das zur aktuellen Datenbankdatei gehörende VBA-Projekt in der Übersicht an, sondern auch das per Verweis eingebundene (s. Bild 3). Ist dieses aktiviert, zeigt der Verweise-Dialog die für dieses VBA-Projekt festgelegten Verweise an.

pic003.png

Bild 3: Auch in Bibliotheksdatenbanken enthaltene Projekte werden im Projekt-Explorer angezeigt.

ändern von Bibliotheken

Wenn Sie Bibliotheken verwenden, stellen sich oft erst im Einsatz in der Zielanwendung Programmierfehler heraus. Sie werden dann normalerweies schnell in den VBA-Editor wechseln, um das Problem zu beheben.

Auch wenn dies im ersten Moment gelingt: änderungen an Bibliotheken von anderen Anwendungen aus sind, genau wie bei Access-Add-Ins auch, nur temporär und halten genau solange, bis Sie die Anwendung schließen.

Das reicht zum Testen, ob ein Bugfix funktioniert, zum Durchführen der eigentlichen änderung müssen Sie die Bibliotheksdatenbank jedoch allein öffnen. Ein kleiner Praxistipp: Nehmen Sie kleinere änderungen direkt von der Host-Anwendung aus vor und testen Sie diese.

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

Schreibe einen Kommentar