Wenn Deine Access-Anwendung älter ist als der Azubi

Dann wird’s Zeit für ein Update.
Nicht alles neu schreiben – aber systematisch modernisieren.
Ich zeige Dir, worauf ich achte, wenn ich Access-Anwendungen zukunftsfähig mache.

Warum modernisieren statt ersetzen?

  • Geringere Kosten
  • Bestehendes Wissen nutzen
  • Bewährte Prozesse erhalten
  • Zugriff auf SQL Server, Office, Azure bleibt erhalten

Access ist nicht tot.
Aber ohne Pflege wird’s rostig.

Checkliste: Wichtige Modernisierungsschritte

1. Frontend und Backend trennen

Speichere Tabellen in einer eigenen .accdb oder SQL Server.

' Automatische Verknüpfung bei Start
Public Sub VerbindeTabellen()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef

    Set db = CurrentDb
    For Each tdf In db.TableDefs
        If Left(tdf.Name, 4) <> "MSys" Then
            tdf.Connect = "ODBC;DSN=SQLSERVER_DSN;"
            tdf.RefreshLink
        End If
    Next tdf
End Sub

2. Direkte SQLs aus Formularen entfernen

Kein SQL in Steuerelementen. Kein DoCmd.RunSQL.

Nutze zentrale Funktionen mit Parameterbindung:

Public Sub KundeAnlegen(Name As String, PLZ As String)
    Dim qd As DAO.QueryDef
    Set qd = CurrentDb.CreateQueryDef("", _
        "PARAMETERS pName TEXT, pPLZ TEXT; " & _
        "INSERT INTO Kunden (Name, PLZ) VALUES (pName, pPLZ)")

    qd!pName = Name
    qd!pPLZ = PLZ
    qd.Execute dbFailOnError
End Sub

3. Fehlerbehandlung konsequent einbauen

On Error GoTo Fehler

' … Code …

Exit Sub
Fehler:
    MsgBox "Fehler: " & Err.Number & " - " & Err.Description

Optional: Fehler in Logtabelle schreiben.

4. Rechte sauber steuern

Keine Vollzugriffe für jeden.
Steuere Berechtigungen rollenbasiert.

If gstrRolle <> "Admin" Then
    Me.AllowDeletions = False
    Me.cmdLöschen.Visible = False
End If

Und Zugriff auf Tabellen via Views einschränken:

CREATE VIEW Sicht_Kunden_Vertrieb AS
SELECT KundenID, Name FROM dbo.Kunden WHERE Aktiv = 1;

5. Datenstruktur dokumentieren

Nutze eine eigene Tabelle für Spaltenbeschreibungen.
Oder exportiere Metadaten via VBA:

Public Sub TabellenStrukturExportieren()
    Dim tdf As DAO.TableDef, fld As DAO.Field
    For Each tdf In CurrentDb.TableDefs
        If Left(tdf.Name, 4) <> "MSys" Then
            For Each fld In tdf.Fields
                Debug.Print tdf.Name & ";" & fld.Name & ";" & fld.Type
            Next fld
        End If
    Next tdf
End Sub

6. Performance prüfen und optimieren

  • Nutze Indexe gezielt
  • Schränke Abfragen mit WHERE ein
  • Verwende Pass-Through bei großen SQL-Abfragen
  • Keine DLookup in Endlosschleifen
' DLookup vermeiden
' Statt:
Me.txtPLZ = DLookup("PLZ", "Kunden", "KundenID = " & Me.cboKunde)

' Besser:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT PLZ FROM Kunden WHERE KundenID = " & Me.cboKunde)
If Not rs.EOF Then Me.txtPLZ = rs!PLZ
rs.Close

7. Oberflächen modernisieren

  • Kein Autoform mehr
  • Navigation zentral über Startformular
  • Alle Formulare konsistent gestaltet
  • Hinweise für den Nutzer
  • Farben und Schriftgrößen vereinheitlichen

Optional: Modernes Ribbon-Menü selbst bauen.

8. Automatisierung integrieren

Du kannst Access mit Outlook, Excel, Word, SQL Server und Power Automate kombinieren.

Beispiel: Mailversand mit PDF-Anhang

Public Sub MailSenden(empfänger As String, anhangPfad As String)
    Dim Mail As Object
    Set Mail = CreateObject("Outlook.Application").CreateItem(0)

    With Mail
        .To = empfänger
        .Subject = "Dokument"
        .Body = "Bitte finden Sie das Dokument im Anhang."
        .Attachments.Add anhangPfad
        .Send
    End With
End Sub

Tabelle: Alt vs. Modernisiert

ThemaAltModernisiert
TabellenlokalSQL Server oder Backend-DB
SQL im Formularfest verdrahtetzentral in Funktionen
RechteAlle dürfen allesrollenbasiert + Sichtfilterung
FehlerbehandlungKeine oder MsgBoxLogging + gezielte Reaktion
Oberflächebunt und inkonsistentstrukturiert + einheitlich
PerformanceDLookup, viele JoinsIndexe + gezielte Datenabfragen

Mein trockener Rat

Du musst Access nicht abschaffen.
Aber Du musst es behandeln wie jedes andere System.
Mit Struktur, Schutz und Weitblick.

Dann hält’s noch viele Jahre – ohne Bauchschmerzen.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

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