Anwendung auf Release 2.0 umstellen
Stellen Sie eine Access-Anwendung mit WKL-Steuerelementen von Release 1.x auf Release 2.0 der WKL Forms Object Library um. Mit Release 2.0 erhält die Typbibliothek einen neuen Namen. Jede Anwendung, deren VBA-Code oder Verweise diesen Namen enthalten, passen Sie einmal an.
Voraussetzungen: Die Quelle der Anwendung liegt vor, also eine ACCDB oder ein Projekt, das mit dem Build-Werkzeug oder dem WKL Office SDK gebaut wird. Eine ACCDE lässt sich nicht ändern; bauen Sie sie aus ihrer ACCDB neu.
Lösungsüberblick
| Release 1.x | Release 2.0 | |
|---|---|---|
| Name der Bibliothek in VBA | WklComponents | WklForms |
| Verweis (Extras › Verweise) | WKL Forms 1.x Object Library | WKL Forms 2.0 Object Library |
ProgIDs für CreateObject | WklComponents.Texts, WklComponents.Application … | WklForms.Texts, WklForms.Application … |
Err.Source bei Fehlern der Steuerelemente | WklComponents | WklForms |
| Natives Startmodul | Wkl.Access.Components.dll | Wkl.Forms.ObjectLibrary.dll |
Bibliotheks-ID, Klassen-IDs und Member der Steuerelemente sind dieselben wie in Release 1.68. Formulare und Berichte behalten ihre WKL-Steuerelemente samt allen Einstellungen. Zu ändern sind nur Code und Verweise, die den Namen der Bibliothek enthalten.
Für einen Windows-Benutzer kann nur eines der beiden Releases registriert sein. Die Registrierung von 2.0 entfernt die
Registrierung von 1.x einschließlich der ProgIDs WklComponents.*. Wird danach wieder ein Release 1.x registriert,
ersetzt es 2.0. Stellen Sie deshalb alle Anwendungen, mit denen ein Benutzer arbeitet, gleichzeitig um.
Umsetzung
- Registrieren Sie Release 2.0 auf dem Entwicklungs-PC (Freigegebenes Paket installieren). Ab diesem Zeitpunkt sind die ProgIDs
WklComponents.*auf diesem PC nicht mehr registriert:CreateObject("WklComponents.Texts")und ähnliche Aufrufe scheitern mit dem Laufzeitfehler 429. - Öffnen Sie die Datenbank ohne Startcode. Halten Sie beim Öffnen die Umschalttaste gedrückt. Dann laufen weder das Startformular noch das Makro
AutoExecgegen die alten Verweise. - Prüfen Sie den Verweis. Wählen Sie im VBA-Editor Extras › Verweise. Access bindet den Verweis beim Öffnen der Datenbank über die Bibliotheks-ID an das registrierte Release 2.0. Ist WKL Forms 1.x Object Library trotzdem als “NICHT VORHANDEN” markiert, entfernen Sie dort das Häkchen, und setzen Sie es bei WKL Forms 2.0 Object Library.
- Ersetzen Sie den Bibliotheksnamen im Code. Wählen Sie Bearbeiten › Ersetzen. Suchen Sie nach
WklComponents, ersetzen Sie es durchWklForms, und wählen Sie als Bereich Aktuelles Projekt. Damit erfassen Sie Deklarationen wieDim tree As WklComponents.WklTreeView, ProgIDs inCreateObject("WklComponents.Texts")und Vergleiche mitErr.Source. - Suchen Sie den Namen außerhalb der Module. Text, der kein VBA-Code ist, erfasst Schritt 4 nicht, zum Beispiel eine ProgID in einer Tabelle, einer Abfrage oder einem Makro. Durchsuchen Sie die Objekte der Datenbank nach
WklComponents, und ändern Sie die Fundstellen ebenso. - Kompilieren Sie. Wählen Sie Debuggen › Kompilieren, korrigieren Sie verbliebene Zeilen, und speichern Sie. Erstellen Sie danach aus der ACCDB eine neue ACCDE.
Projekt, das aus Quelldateien gebaut wird
Bei einem Projekt, das mit tools\build\Build-AccessApp.ps1 oder dem WKL Office SDK gebaut wird, ändern Sie die
Quelldateien statt der Datenbank:
- Ändern Sie in
referencesderaccess-app.jsonden Eintrag{ "library": "WklComponents", "major": 1, "minor": ... }in{ "library": "WklForms", "major": 2, "minor": 0 }(access-app.json). Solange ein VerweisWklComponentsnennt, bricht der Build mit einer Meldung ab. - Setzen Sie in
source\references.jsoneines WKL-Office-SDK-Projekts beim Verweis mit der Bibliotheks-ID{A37D549E-FCD0-48EC-8B14-C7323B747E4F}den Wert"name"aufWklForms,"major"auf2und"minor"auf0. - Ersetzen Sie in den exportierten Modulen, Formularen und Berichten
WklComponentsdurchWklForms. - Bauen Sie neu. Die neue
app-manifest.jsonnennt unterrequiresdie BibliothekWklFormsmit Version 2.0 (app-manifest.json).
Ergebnis
Die Anwendung kompiliert gegen WKL Forms 2.0 Object Library, und ihre Formulare zeigen die WKL-Steuerelemente wie
bisher. Verteilen Sie sie nur zusammen mit Release 2.0 auf Benutzer-PCs (Anwendung mit WKL-Steuerelementen auf
Benutzer-PCs verteilen), und zwar mit WKL Bootstrapper 3.1 oder höher: Erst ab 3.1 erkennt der
Starter Anwendungen für 2.0 und registriert Wkl.Forms.ObjectLibrary.dll; ältere Versionen kennen nur Release 1.x.
Eine noch nicht umgestellte Anwendung kann auf einem PC mit Release 2.0 zum Teil weiterlaufen, weil Access ihren
Verweis über dieselbe Bibliotheks-ID bindet. Was die ProgIDs WklComponents.* verwendet oder Err.Source mit
WklComponents vergleicht, scheitert dort jedoch. Zugesichert ist der Betrieb nur mit der Hauptversion, gegen die die
Anwendung gebaut wurde.