Sonntag, 18. Januar 2015

Add-In: PrepareMdbForBuild

Vor der Veröffentlichung einer neuen Version eines Add-Ins müssen diverse kleine Anpassungen vorgenommen werden. Bei der manuellen Abarbeitung der zu erledigenden Aufgaben gerät schnell etwas in Vergessenheit. Wenn man diesen Schritt automatisiert, fällt die Bereitstellung einer neuen Version wesentlich leichter.

Ich habe mir angewöhnt, in jedes Add-In eine Methode mit dem Namen PrepareMdbForBuild einzufügen. In dieser Methode sammle ich alle Tätigkeiten, die vor der Veröffentlichung einer neuen Version durchgeführt werden sollen.

Von der Methode werden folgende Aufgaben erledigt:
  • Konstante für Bedingte Kompilierung ändern
  • Datensätze in Tabellen löschen
  • Ungenutzte Datenbankobjekte entfernen

Konstante für Bedingte Kompilierung
Es gibt Funktionalitäten, die sollen sich zur Laufzeit des Add-Ins und während dessen Entwicklung unterscheiden. Das Error-Handling ist eine solche Funktionalität.
Während der Entwicklung möchte ich alle Fehlerdetails sehen und die Möglichkeit haben, in die relevante Codezeile zu wechseln. Zur Laufzeit sollen meine Anwender nicht mit solchen Informationen und Möglichkeiten konfrontiert werden. Hier steht mehr eine knappe Information und die Möglichkeit, die Fehlerdetails per E-Mail zu versenden, im Vordergrund.
Lösen lässt sich das ganze über eine Konstante für die Bedingte Kompilierung. Ich nenne diese i.d.R. "conEntw". Zur Entwicklungszeit hat diese den Wert "1". Bei der Bereitstellung für eine neue Version setze ich den Wert auf "0" und kompilieren den Code.

Datensätze in Tabellen löschen
Es gibt Add-Ins, bei denen Daten in Hilfstabellen gespeichert werden. In der produktiven Version des Add-Ins haben die Datensätze, die während der Entwicklung angefallen sind, nichts zu suchen. Ein gutes Beispiel hierfür ist die Tabelle ErrorLog. Vor der Bereitstellung für eine neue Version werden alle Datensätze in dieser Tabelle gelöscht.

Ungenutzte Datenbankobjekte entfernen
Bei manchen Add-Ins ist es hilfreich, wenn man zum Testen ein paar Datenbankobjekte in der Datenbank hat, die nichts mit der eigentlichen Funktion zu tun haben. Diese Datenbankobjekte müssen vor der Bereitstellung des Add-Ins gelöscht werden.

Code-Beispiel
Das folgende Beispiel zeigt, wie eine solche Methode aussieht:
1:  Public Sub PrepareAccdbForBuild()  
2:    
3:    Application.SetOption "Conditional Compilation Arguments", "conEntw = 0"  
4:    DoCmd.RunCommand acCmdCompileAndSaveAllModules  
5:      
6:    DoCmd.DeleteObject acTable, "tbl_VersionHistory"  
7:    DoCmd.DeleteObject acReport, "zrpt_Demo"  
8:    DoCmd.DeleteObject acMacro, "zDemo"  
9:      
10:    CurrentDb.Execute "DELETE * FROM tbl_ErrorLog;", dbFailOnError  
11:    
12:  End Sub  
In den Zeilen 3 und 4 wird die Konstante für die Bedingte Kompilierung angepasst und der gesamte VBA-Code kompiliert.
In den Zeilen 6 bis 8 werden diverse Datenbankobjekte gelöscht. Schlussendlich werden in Zeile 10 die Datensätze einer Tabelle gelöscht.

Mit diesem kleinen Methode geht die Bereitstellung einer neuen Version leichter von der Hand. Ich kann mir sicher sein, dass ich keinen Schritt vergessen habe und dass alle Schritte auf die richtige Art und Weise durchgeführt wurden.
Dieses Vorgehen eignet sich übrigens nicht nur für die Bereitstellung von Add-Ins. :-)

Keine Kommentare: