Keine Trennung von Frontend und Backend => Warum eine saubere Trennung bei Access überlebenswichtig ist – und wie ich sie herstelle

Wenn alles in einer Datei steckt, ist der Absturz nicht weit

Eine .accdb, 200 MB groß, auf dem Netzlaufwerk.
20 Benutzer greifen gleichzeitig zu.
Daten, Formulare, Abfragen, VBA – alles in einem.

Was kann schon schiefgehen?
Spoiler: Alles.

Warum die Trennung so wichtig ist

  • Frontend (Formulare, VBA, Berichte) wird ständig geändert
  • Backend (Tabellen, Daten) muss stabil bleiben
  • Ein defektes Frontend betrifft nur den Benutzer
  • Kein Sperren der Datenbankdatei
  • Einfacheres Updaten: Neue Version einfach drüberkopieren
  • Vorbereitung auf SQL-Backend möglich

Ohne Trennung:
Datenverlust, Performance-Probleme, ständiger Wartungsaufwand.

Was gehört wohin?

BestandteilGehört ins FrontendGehört ins Backend
Tabellen
Abfragen (Select)
Formulare
Berichte
VBA-Module
Makros
Daten

So stellst Du die Trennung her

Schritt 1: Ursprüngliche Datei sichern

Kopie machen. Immer.
Dann Backend-Datei erstellen.

Schritt 2: Tabellen in neue Datei exportieren

Access-Menü → Externe Daten → Access → In neue Datei exportieren.
Nur Tabellen. Ohne Beziehungen.

Tipp: Daten.accdb auf einem Netzlaufwerk speichern.

Schritt 3: Tabellen im Frontend verknüpfen

Im Frontend:
Externe Daten → Access → Link-Tabellen
Ziel: daten.accdb
Alle Tabellen markieren, verknüpfen.

Jetzt zeigt jede Tabelle im Frontend auf das Backend.
Im Tabellen-Icon ist ein kleiner Pfeil.

Tabellen verknüpfen per VBA

Damit’s auch automatisch geht – z. B. beim Start:

Public Sub TabellenNeuVerknuepfen()
    Dim tdf As DAO.TableDef
    Dim dbPfad As String
    dbPfad = "\\server\apps\daten.accdb"

    For Each tdf In CurrentDb.TableDefs
        If Len(tdf.Connect) > 0 Then
            tdf.Connect = ";DATABASE=" & dbPfad
            On Error Resume Next
            tdf.RefreshLink
            On Error GoTo 0
        End If
    Next
End Sub

Das ist hilfreich, wenn der Pfad sich ändert – z. B. bei neuen Servern.

Optional: SQL Server als Backend

Du kannst direkt auf SQL migrieren.
Access bleibt Frontend. Daten landen im SQL Server.

Tabellenimport z. B.:

SELECT * INTO KundenNeu
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0',
  'Data Source=C:\pfad\daten.accdb')...Kunden;

Danach ODBC-Verknüpfung im Access-Frontend:

Dim tdf As TableDef
Set tdf = CurrentDb.CreateTableDef("dbo_Kunden")
tdf.Connect = "ODBC;DRIVER=ODBC Driver 17 for SQL Server;SERVER=sqlsrv01;DATABASE=meinDB;Trusted_Connection=Yes;"
tdf.SourceTableName = "dbo.Kunden"
CurrentDb.TableDefs.Append tdf

Wichtige Hinweise zur Trennung

  • Keine Abfragen mit „Make-Table“ im Frontend laufen lassen
  • Keine Temp-Tabellen im Backend speichern
  • Nie VBA nutzen, um Backend-Tabellen zu löschen und neu zu erstellen
  • Nutzer bekommen nur das Frontend (lokal), nie das Backend

Tabelle: Vergleich getrennter vs. ungetrennter Aufbau

MerkmalOhne TrennungMit Trennung
Updatefähigkeitschlechtsehr gut
Mehrbenutzerfähigkeitinstabilstabil
Fehlertoleranzniedrighoch (lokales Frontend)
Wartbarkeitschwierigstrukturiert
Vorbereitung auf SQLkaum möglichdirekt möglich

Mein Setup für saubere Trennung

BereichVorgehen
Backend-Dateidaten.accdb zentral, Rechte: Lese/Schreiben
Frontend-Dateilokal pro Nutzer, regelmäßig aktualisiert
Verknüpfungautomatisch per VBA
DeploymentUpdater-Tool oder Loginskript
Entwicklunggetrennte Dev-/Live-Versionen

Access ist nicht schlecht. Aber es wird manchmal unnötig schlecht genutzt.

Wenn Du alles in eine Datei packst, arbeitest Du gegen die Architektur.

Trenn sauber – dann hält Deine Anwendung auch den nächsten Versionssprung aus.
Und zehn Nutzer gleichzeitig. Und Dich selbst in sechs Monaten.

Kategorien: