Der Datenschäfer-Ansatz: Modernisieren statt Wegwerfen => Wie ich alten Access Anwendungen neues Leben einhauche

Wenn’s läuft, läuft’s – aber wie lange noch?

Viele Access-Anwendungen in KMU tun seit 15 Jahren zuverlässig ihren Dienst.
Und genau das ist das Problem. Niemand traut sich mehr ran.
Keiner kennt den Code. Und plötzlich geht nix mehr, wenn Office mal wieder was ändert.

Ich sag: Nicht wegwerfen. Modernisieren. Stück für Stück.

Warum Access nicht das Problem ist

Access ist schnell, leichtgewichtig, lokal.
Und ja – technisch veraltet.
Aber für viele interne Abläufe reicht’s völlig.

Was fehlt, ist:

  • Trennung von Logik und Daten
  • saubere Fehlerbehandlung
  • sichere Datenzugriffe
  • moderne Oberfläche (optional)

Meine Modernisierungs-Strategie

  1. Code entkoppeln – kein SQL im Formularereignis
  2. Zugriffe zentralisieren – eigene Datenzugriffsschicht
  3. Backend auf SQL Server umstellen
  4. Fehlerlogging einbauen
  5. Performance messen und verbessern
  6. Optional: Frontend mit Power Apps oder Web kombinieren

Beispiel: Schlechter Code

Private Sub btnSpeichern_Click()
    CurrentDb.Execute "INSERT INTO Kunden (Name, PLZ) VALUES ('" & Me.txtName & "', '" & Me.txtPLZ & "')"
End Sub

Das sieht man oft.
Funktioniert, bis jemand einen Apostroph im Namen hat. Oder bis SQL Injection passiert.

Besser: Parameterisiert und gekapselt

Public Sub KundeAnlegen(strName As String, strPLZ As String)
    Dim db As DAO.Database
    Dim qd As DAO.QueryDef

    Set db = CurrentDb
    Set qd = db.CreateQueryDef("", _
        "PARAMETERS [pName] TEXT, [pPLZ] TEXT; " & _
        "INSERT INTO Kunden (Name, PLZ) VALUES ([pName], [pPLZ])")

    qd!pName = strName
    qd!pPLZ = strPLZ
    qd.Execute dbFailOnError
End Sub

Und im Formular:

Private Sub btnSpeichern_Click()
    On Error GoTo Fehler
    Call KundeAnlegen(Me.txtName, Me.txtPLZ)
    Exit Sub
Fehler:
    MsgBox "Fehler: " & Err.Description
End Sub

Nächster Schritt: SQL Server Backend

  1. Tabellen in SQL Server anlegen
  2. Access-Frontend per ODBC verbinden
  3. Abfragen auf Pass-Through umstellen
  4. Performance prüfen

Vorteile:

  • Mehrbenutzerfähig
  • Transaktionssicher
  • Backup-fähig
  • Zugriff über andere Tools möglich

Logging einbauen

Public Sub SchreibeLog(Ereignis As String, Details As String)
    CurrentDb.Execute "INSERT INTO Fehlerlog (Zeitpunkt, Ereignis, Details) " & _
                      "VALUES (Now(), '" & Ereignis & "', '" & Details & "')"
End Sub
On Error GoTo Fehler
' Code …
Exit Sub
Fehler:
    Call SchreibeLog("Fehler bei Speichern", Err.Description)

So findest Du auch sporadische Fehler wieder.

Tabelle: Was ich modernisiere und wie

AltNeu
SQL im FormularProzedur mit Parametern
Lokale TabelleODBC auf SQL Server
Inline-FehlerLogging mit Detaildaten
ComboBox mit DLookupRecordset mit SQL JOIN
Formular direkt auf TabelleUngebunden + manueller Save

Und wenn mehr gebraucht wird?

Du kannst Access-Formulare ersetzen:

  • mit Power Apps
  • mit einer kleinen Blazor- oder React-App
  • mit Excel-Frontends (ja, manchmal reicht das)

Aber: Viele Anwendungen müssen nicht ersetzt werden.
Nur aufgeräumt. Und gepflegt.

Mein trockener Leitsatz

Wenn Access bei Dir seit 2008 läuft, ist es kein Müll.
Aber es hat einen Termin beim Zahnarzt nötig.

Ich bring das Ding wieder auf Kurs.
Du sparst Zeit, Nerven – und musst nix wegwerfen.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

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