Benutzer-Werkzeuge

Farbschema: Hell

Legacy-Modernisierung: weiterentwickeln statt neu schreiben

Access · VBA · Delphi · .NET

Ihre Software trägt das Geschäft. Modernisieren Sie sie, ohne von vorn anzufangen

Wir entwickeln geschäftskritische Bestandsanwendungen weiter – Access und VBA, Delphi, Datenbanken der Fertigung – und lösen nur ab, was sich nicht mehr tragen lässt. Für Microsoft Access bauen wir die Werkzeuge dafür selbst.

Ausschnitt einer Access-Anwendung: Kopfzeile „Datenquellen“, Befehlsleiste mit Neu, Bearbeiten, Löschen und Verbindung prüfen, Navigation mit Übersicht, Protokoll, Datenquellen sowie Personen und Schlüssel, daneben das Raster der Datenquellen
Eine Access-Anwendung aus unserer Werkstatt: die Verwaltung unseres Datendienstes, gebaut mit Forms Object Library und Office JSON. Ein Klick zeigt das ganze Fenster.

Ausgangslage

Wann eine bewährte Anwendung zum Risiko wird

Selten, weil sie nicht mehr funktioniert. Meistens, weil sich niemand mehr traut, sie zu ändern.

  • Eine Datei, kein Verlauf. Die Anwendung liegt als ACCDB auf einem Laufwerk. Wer was wann geändert hat, lässt sich nicht nachvollziehen, und zwei Entwickler überschreiben gegenseitig ihre Änderungen.
  • Wissen in wenigen Köpfen. Die Geschäftsregeln stecken in Formularen, Abfragen und VBA-Code – aufgeschrieben sind sie oft nirgends sonst.
  • Kennwörter am Arbeitsplatz. Die Verbindung zum SQL Server steht mit Datenbankkennwort in der Anwendung, und von unterwegs geht es nur über VPN.
  • Eine Insel. Webdienste, ERP und Auswertungen erreicht die Anwendung nicht; Daten werden exportiert und von Hand abgeglichen.
  • Eine Oberfläche von gestern. Endlosformulare und verschachtelte Unterformulare, wo Anwender heute einen Baum, ein Raster mit Summen oder ein Gantt-Diagramm erwarten.

Warum ein Neubau selten der erste Schritt ist

Der Wert einer gewachsenen Anwendung liegt in ihren Regeln: Sonderfälle, Prüfungen und Abläufe, die über Jahre in Formulare, Abfragen und Code gewandert sind. Ein Neubau muss jede davon wiederfinden, neu beschreiben und neu testen – und solange er läuft, will das alte System weiter gepflegt werden.

Deshalb machen wir die Anwendung zuerst wieder änderbar: Quelltexte unter Versionskontrolle, saubere Schnittstellen, eine Oberfläche, mit der man gern arbeitet. Abgelöst wird ein Teil erst, wenn er sich so nicht mehr tragen lässt – etwa weil die Daten die 2 GB einer Access-Datei sprengen oder viele Standorte gleichzeitig zugreifen müssen.

Und dann Schritt für Schritt: Die Grenze jedes Schritts steht vorher fest, Rückweg und Datenkonsistenz planen und prüfen wir, bevor umgestellt wird. Schreiben alt und neu eine Zeit lang nebeneinander, ist der Abgleich Teil des Plans.

Aus der Praxis · Chemische Industrie · seit 2003

Drei geschäftskritische Systeme, über zwei Jahrzehnte weiterentwickelt – Anlagenmanagement, Werkstattinformationssystem und Lagerverwaltung: in Delphi fortgeführt, schrittweise auf .NET 8 migriert, mit DevExpress-Oberfläche, Datenbankoptimierung und CI/CD.

Zu den Referenzen

Vier Wege – je nachdem, wo es klemmt

Unter Versionskontrolle weiterentwickeln

Die Access-Anwendung als Quelltext in Git: Änderungen je Formular und Modul prüfen, die ACCDE aus einem festen Stand bauen.

Oberfläche erneuern, Logik behalten

Baum, Raster mit Gruppen und Summen, Gantt-Diagramm, Navigation – als Steuerelemente auf den Formularen, die es schon gibt.

Anbinden statt abschotten

Webdienste und JSON direkt in VBA; SQL-Server-Daten über einen Datendienst statt mit Kennwort am Arbeitsplatz.

Gezielt nach .NET ablösen

Wo ein Teil wirklich ersetzt werden muss: Stück für Stück, mit festgelegter Grenze und geprüftem Rückweg – so wie bei den Delphi-Systemen oben.

Was uns unterscheidet

Eigene Werkzeuge statt Folien: das Access-Ökosystem

Für Access bauen wir die Werkzeuge, die eine Modernisierung tragen, selbst – dokumentiert, mit Stand und Grenzen.

WerkzeugWas es löstStand
Office SDK Die Anwendung als Quelltext in Git oder SVN; ACCDB und ACCDE werden aus einem festen Stand gebaut, auf jedem Rechner und in der CI gleich. In Entwicklung
Release 0.13.0; Windows 11 mit 32- oder 64-Bit-Access aus Microsoft 365
Forms Object Library 31 ActiveX-Steuerelemente und Objekte für Access-Formulare – Baum, Raster, Gantt-Diagramm, Navigation –, eingerichtet im Eigenschaftenblatt, lauffähig in ACCDE und Access Runtime. Freigegeben
Release 2.0.0, 32- und 64-Bit-Access
Office JSON JSON in VBA mit dem Objektmodell von MSXML: Abfragen mit JPath nach RFC 9535, Beträge ohne stilles Runden, keine Laufzeitinstallation. Freigegeben
32- und 64-Bit-Office (Microsoft 365)
Bootstrapper Neue Releases je Benutzer ohne Administratorrechte, nachdem die IT den Starter einmal installiert hat: Installation mit Rollback, Komponenten in der Bitbreite des installierten Office, Entfernen über „Apps“. Freigegeben
Windows 11 mit 32- oder 64-Bit-Access (Microsoft 365)
Database Gateway und OData-ODBC-Treiber SQL-Server-Daten ohne Datenbankkennwort am Arbeitsplatz, Rechte je Tabelle, Zugriff von außen ohne VPN; Access verknüpft die Tabellen und bearbeitet sie ohne VBA. mit Access und der Access Runtime, 32 und 64 Bit

Die Werkzeuge und der Datendienst sind auf Deutsch, Englisch und Slowenisch dokumentiert; die API-Referenzen der Forms Object Library und von Office JSON gibt es nur auf Englisch.

Von der Datei zum nachvollziehbaren Build

So kommt eine bestehende Access-Anwendung mit dem Office SDK unter Versionskontrolle. Die Befehle und das Beispielprojekt „Kunden“ stammen aus dem Tutorial.

  1. Bestehende Anwendung übernehmen

    Projekt anlegen, Datenbank exportieren. Der Export arbeitet auf einer Kopie in einem verborgenen Access – die Ausgangsdatenbank wird nur gelesen.

    wkl-office new C:\Work\Kundencd C:\Work\Kundengit initwkl-office export Kunden.acproj -d C:\Data\Kunden.accdb
  2. Quelltexte statt Binärdatei

    Jede Abfrage, jedes Formular, jeder Bericht und jedes Modul wird eine Textdatei, Tabellen werden Schema, Nachschlagedaten JSON-Zeilen. Was Access bei jedem Speichern neu schreibt, lässt der Export weg.

    Kunden.acproj
    source/
      queries/     *.query.txt
      forms/       *.form.txt
      reports/     *.report.txt
      modules/     *.bas
      classes/     *.cls
      tables/      *.table.json
      data/        *.jsonl
      references.json
  3. Änderungen prüfen wie Code

    Gearbeitet wird weiter in Access. Danach zeigt das SDK, was sich geändert hat – Objekt für Objekt, Zeile für Zeile –, und der Commit landet als lesbarer Text im Repository, wo das Team ihn prüft wie jeden anderen Code.

    wkl-office status Kunden.acprojwkl-office diff Kunden.acproj form:frmKundenwkl-office commit Kunden.acproj -m "USt-IdNr."
  4. Ein definierter Build

    Gebaut wird aus dem Repository, nicht aus der zuletzt gespeicherten Kopie. check findet ungültige Quellen, fehlende Verweise und Kennwörter in Abfragen, bevor Access startet. roundtrip beweist, dass die Quellen vollständig sind: Bei Exit-Code 0 baut jeder, der das Repository klont, dieselbe Anwendung – dieselben Objekte, Tabellen, Daten und Einstellungen, wenn auch nicht byte-gleich.

    wkl-office check Kunden.acprojwkl-office roundtrip Kunden.acprojwkl-office build Kunden.acproj -c Release

In Entwicklung
Das Office SDK läuft in Release 0.13.0 unter Windows 11 mit 32- oder 64-Bit-Access aus Microsoft 365. Access 2016 bis 2021, Windows 10 und ein Build allein mit der Access Runtime werden nicht unterstützt; ein Build braucht eine angemeldete Windows-Sitzung mit Access. Mehr zum SDK

Nachweise, die Sie prüfen können

  • Zum Nachmachen geschrieben. Die Anleitungen führen Schritt für Schritt: eine Tabelle in Access verknüpfen, mit Bildern; vom leeren Server zur ersten Abfrage.
  • Selbst im Einsatz. Die Verwaltung des Datendienstes ist eine Access-Anwendung auf Forms Object Library und Office JSON – das Bild oben.
  • Offen dokumentiert. Stand, Voraussetzungen und Grenzen jedes Werkzeugs stehen in seiner Dokumentation, nicht nur hier.
Access mit der verknüpften Tabelle dbo_Artikel im Navigationsbereich und ihrem Datenblatt mit Nummer, Bezeichnung, Gruppe und Preis
Eine Tabelle des Datendienstes, in Access über den OData-ODBC-Treiber verknüpft und im Datenblatt bearbeitbar – ohne VBA. Testdaten.

Zum Nachlesen: SDK-Tutorial, Aufbau der Quelltexte, Access-Werkzeuge im Überblick; Datendienst im Überblick, Treiber im Überblick.

Ihr nächster Schritt

  • Ihre Access-Anwendung soll weiterleben? Wir sehen sie uns gemeinsam an und sagen Ihnen, welcher der vier Wege passt – Gespräch vereinbaren.
  • Sie wollen die Werkzeuge erst selbst ansehen? Das SDK-Tutorial führt in sieben Schritten von der Datenbank zum Repository.
  • Ihre Altanwendung ist kein Access? Delphi, .NET oder eine Datenbank der Fertigung: siehe Industriesoftware und unsere Referenzen.

Welcher Weg zu Ihrer Anwendung passt, klären wir am besten an Ihrem System – nicht an einer Folie.

Gespräch vereinbaren