Wenn die Anwendung läuft, aber alt aussieht
Viele Access-Apps tun seit Jahren ihren Dienst.
Aber der Code ist unübersichtlich.
Die Masken wirken wie aus Windows 98.
Und keiner traut sich mehr ran.
Du musst nicht alles neu bauen.
Oft reichen 5 pragmatische Schritte – ohne Komplettsanierung.
Schritt 1: Frontend und Backend trennen
Wenn noch alles in einer .accdb-Datei liegt, ist das der erste Schritt.
' Beispiel: Tabellen per VBA verknüpfen
Public Sub TabellenNeuVerknuepfen()
Dim db As DAO.Database
Set db = CurrentDb
Dim tdf As DAO.TableDef
For Each tdf In db.TableDefs
If Left(tdf.Name, 4) <> "MSys" Then
tdf.Connect = ";DATABASE=\\Server\Daten\Backend.accdb"
tdf.RefreshLink
End If
Next
End Sub
So kannst Du das Backend später auch auf SQL Server umstellen – ohne alle Formulare neu zu bauen.
Schritt 2: Menüleiste und Startbereich modernisieren
Makro-Menüs und Startformulare mit vielen Schaltflächen wirken alt.
Besser: Ein klares Hauptmenü. Optional ein Ribbon.
Private Sub Form_Load()
Me.lblBenutzer.Caption = Environ("USERNAME")
Me.lblVersion.Caption = Application.CurrentProject.FileVersion
End Sub
Mit kleinen Änderungen sieht’s gleich moderner aus.
Und wirkt gepflegt.
Schritt 3: Makros durch sauberes VBA ersetzen
Keine Makros mehr.
Jede Schaltfläche bekommt ihren eigenen VBA-Handler.
Private Sub btnSpeichern_Click()
On Error GoTo Fehler
If Me.Dirty Then Me.Dirty = False
MsgBox "Gespeichert.", vbInformation
Exit Sub
Fehler:
MsgBox "Fehler: " & Err.Description, vbCritical
End Sub
Makros lassen sich automatisiert in VBA konvertieren.
Dann nur noch aufräumen.
Schritt 4: Tabellenstruktur absichern
Viele Alt-Apps haben keine Pflichtfelder, keine Default-Werte.
Das rächt sich bei jeder Dateneingabe.
Beispiel für T-SQL-Erweiterung, wenn die Daten auf SQL Server liegen:
ALTER TABLE Kunden
ADD CONSTRAINT DF_Kunden_Status DEFAULT 'aktiv' FOR Status;
ALTER TABLE Kunden
ADD CONSTRAINT CK_Kunden_PLZ CHECK (LEN(PLZ) >= 4);
Auch Access-Tabellen lassen sich mit Datenmakros (oder durch Umzug nach SQL) absichern.
Schritt 5: Performance per Query-Optimierung
Viele Formulare laden mit SELECT *
auf unindexierten Tabellen.
Das macht sie langsam.
Ersetze durch gezielte Abfragen mit Index-Feldern.
SELECT KundenID, Name, PLZ
FROM Kunden
WHERE Aktiv = True
ORDER BY Name;
Index auf Name
oder Aktiv
hilft hier spürbar.
Bonus: Access mit SQL Server koppeln – Schritt für Schritt
Du musst nicht alles migrieren.
Fang mit den größten Tabellen an.
-- Beispiel: Migration einer Access-Tabelle
SELECT * INTO Kunden_SQL FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Access Database=\\Server\Daten\Backend.accdb;', 'SELECT * FROM Kunden');
Dann Verknüpfung in Access einrichten – und den Rest der App unverändert lassen.
Tabelle: Kleine Maßnahmen, große Wirkung
Maßnahme | Aufwand | Nutzen |
---|---|---|
Frontend/Backend trennen | gering | mehr Stabilität, mehr Möglichkeiten |
Startformular modernisieren | mittel | bessere Benutzerführung |
Makros ersetzen | mittel | saubere Wartung, Debugging möglich |
SQL verbessern | gering | spürbar schneller |
Datenstruktur härten | mittel | weniger Fehler, bessere Qualität |
Mein Setup für pragmatische Modernisierung
Bereich | Empfehlung |
---|---|
Codestruktur | Modul „UI_“, Modul „Logik_“, Modul „Daten_“ |
Benutzerführung | zentrales Menüformular + Ribbon |
Backend | .accdb oder SQL Server |
Updates | Frontend lokal + Auto-Updater |
Testumgebung | separate .accdb mit Logging-Modus |
Nicht alles, was alt ist, muss weg. Aber alles, was bleibt, muss gepflegt werden.
Mit ein bisschen Struktur und Pragmatismus
kannst Du aus einer alten Access-App
eine solide Business-Lösung machen –
ohne Projektchaos.
Keine Antworten