Versionskontrolle: Wie kann ich Access-Datenbanken versionieren und verwalten?

Ziel: Änderungen nachvollziehen, sauber verteilen, Chaos vermeiden

Access hat kein eingebautes Git.
Kein Branching, kein Diff, keine Historie.
Aber Du kannst trotzdem versionieren – mit Disziplin, Tools und ein bisschen VBA.

Variante 1: Frontend und Backend trennen

Das ist die Grundregel.

  • Daten.accdb = Backend mit Tabellen
  • App_v1_2_3.accdb = Frontend mit Formularen, Code, Berichten

Nie alles in einer Datei lassen.
Frontend darf verteilt, ersetzt und aktualisiert werden.
Backend bleibt auf dem Server.

Variante 2: Manuelle Versionierung im Startformular

Const APP_VERSION As String = "v1.2.3"

Private Sub Form_Load()
    Me.lblVersion.Caption = "Version: " & APP_VERSION
End Sub

Oder in Tabelle tblVersion speichern:

Public Function AktuelleVersion() As String
    AktuelleVersion = DLookup("Version", "tblVersion")
End Function

So siehst Du gleich, was der Benutzer geöffnet hat.

Variante 3: Änderungslog fĂŒhren

Tabelle tblChangelog:

  • Version
  • Datum
  • Modul
  • Änderung
  • GeĂ€ndertVon

Beim Deployment pflegen:

INSERT INTO tblChangelog VALUES ("1.2.4", #01.06.2025#, "frmKunden", "Fehlermeldung verbessert", "JS")

So siehst Du spÀter, wer wann was warum geÀndert hat.

Variante 4: Export nach Text fĂŒr Git

Mit SaveAsText und LoadFromText kannst Du Objekte als Textdateien speichern – und versionieren.

Application.SaveAsText acForm, "frmKunden", "C:\AccessRepo\Forms\frmKunden.txt"
Application.LoadFromText acForm, "frmKunden", "C:\AccessRepo\Forms\frmKunden.txt"

Das geht auch fĂŒr:

  • Tabellenstrukturen
  • Module
  • Makros
  • Berichte

👉 Danach mit Git, SVN oder anderen Tools versionieren.
Am besten automatisieren (z. B. mit Batch oder PowerShell).

Variante 5: Build-Nummer automatisch erhöhen

Tabelle tblVersion mit Feld Build

Public Sub ErhöheBuildnummer()
    Dim sql As String
    sql = "UPDATE tblVersion SET Build = Build + 1"
    CurrentDb.Execute sql, dbFailOnError
End Sub

Beim Start oder vor Release einmal aufrufen.
Gibt Dir eindeutige Identifikation.

Variante 6: Verteilen ĂŒber Copy + Netzlaufwerk

Wenn Du keine Update-Infrastruktur hast:
Frontend auf Netzlaufwerk → User holt sich Kopie.

If Dir("C:\MyApp\frontend.accdb") <> Dir("\\srv01\AccessApp\aktuelles.accdb") Then
    FileCopy "\\srv01\AccessApp\aktuelles.accdb", "C:\MyApp\frontend.accdb"
End If

Optional mit HashprĂŒfung (MD5/SHA256).

Variante 7: Auto-Update-Skript

Shell "cmd /c xcopy \\srv01\AccessApp\aktuelles.accdb C:\MyApp\ /Y", vbHide

Oder mit Updater-Tool wie FEUpdater oder eigenem Mini-Launcher.

Variante 8: Source Code auslesen

FĂŒr VBA-Code einzelner Module:

Dim mdl As Object
Set mdl = Application.VBE.ActiveVBProject.VBComponents("modTools")
Debug.Print mdl.CodeModule.Lines(1, mdl.CodeModule.CountOfLines)

Dann per Export speichern, vergleichen, dokumentieren.

Variante 9: Dev-Umgebung von Produktivumgebung trennen

Nie in der Live-Datei entwickeln.
Arbeite lokal → teste → exportiere → deploye sauber.

Best Practices

  • Versionsnummer im Titel, Label oder Splash anzeigen
  • Changelog fĂŒhren
  • VBA-Module versionieren (SaveAsText oder manuell)
  • Export automatisieren
  • Deployment strukturieren – kein „Ziehen und Ablegen“
  • Zugriff auf alte Versionen sichern (z. B. ZIP-Archiv pro Release)

Fazit fĂŒr Entwickler

Access ist kein Git – aber Du kannst versionieren, wenn Du willst.
Mit Text-Export, klaren Regeln und etwas Automatisierung behĂ€ltst Du den Überblick.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert