Performance-Gewinne durch Backend-Trennung â Warum Frontend-Backend-Strukturen bei Microsoft Access auch heute Pflicht sind
Was heiĂt âFrontend-Backendâ bei Access?
Frontend = Formulare, Berichte, Abfragen, VBA
Backend = Tabellen, Daten
Zwei getrennte Dateien.
Frontend auf dem PC.
Backend auf dem Server oder Netzlaufwerk.
Verlinkung ĂŒber ODBC, UNC-Pfad oder SQL Server.
Kein Mysterium. Standardtechnik â seit 20 Jahren.
Warum das Ganze?
- Bessere Performance
- Weniger Datenverkehr
- Einfacheres Deployment
- Versionsupdates ohne Datenverlust
- Mehr StabilitĂ€t bei AbstĂŒrzen
- Zugriffsschutz auf Tabellenebene
Wenn Du noch alles in einer Datei hast: höchste Zeit, das zu Àndern.
Was bringtâs konkret?
Beispiel:
Access ohne Trennung lÀdt beim Start alle Objekte und puffert Daten.
Jede Formularnavigation verursacht Dateizugriffe auf die MDB/ACCDB.
Mit Trennung:
Nur die relevanten Daten werden geladen.
Formulare arbeiten gezielter.
Netzwerkverkehr sinkt massiv.
GefĂŒhlt:
Startzeit halbiert sich.
Formulare reagieren sofort.
Weniger Sperren, weniger âNicht genĂŒgend Arbeitsspeicherâ-Fehler.
Wie Du die Trennung sauber umsetzt
- Datenbank duplizieren
- Aus Frontend alle Tabellen löschen
- Ăber Externe Daten > VerknĂŒpfen auf das Backend zugreifen
- Nur Tabellen verknĂŒpfen â keine Abfragen oder Module
- Frontend lokal auf jedem Client speichern
Tipp: UNC statt Netzlaufwerksbuchstaben.
Sonst krachtâs bei falschen Laufwerkszuweisungen.
DoCmd.TransferDatabase acLink, "Microsoft Access", _
"\\srv\data\AccessDB\backend.accdb", acTable, _
"tblKunden", "tblKunden"
Wenn Du auf SQL Server gehst
Noch besser: Backend als SQL Server.
- Keine Dateisperren
- Gleichzeitiger Zugriff kein Problem
- Zugriff ĂŒber ODBC
- Backup, Rechte, Transaktionen â alles dabei
Tabellen werden als âverknĂŒpfte Tabelleâ eingebunden.
Oder via pass-through Queries.
Beispiel: T-SQL-Query im Access-Frontend
SELECT KundenNr, Name, Umsatz
FROM dbo.Kunden
WHERE Umsatz > 50000
Pass-through einrichten:
CurrentDb.CreateQueryDef "qryTopKunden", _
"SELECT TOP 10 * FROM dbo.Kunden ORDER BY Umsatz DESC"
ODBC-Verbindung vorher testen â z.âŻB. via DSN oder Connection String.
Achtung bei verknĂŒpften Tabellen
VerknĂŒpfte Tabellen sind bequem â aber langsam bei groĂen Datenmengen.
Deshalb:
- Niemals
SELECT *
- Immer WHERE einschrÀnken
- Möglichst keine Joins mit lokalen Tabellen
Besser:
Hole die Daten per SQL, arbeite dann lokal damit.
Zum Beispiel:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT KundenNr, Name FROM tblKunden WHERE Aktiv = True", dbOpenSnapshot)
UpdatefÀhigkeit sichern
Wenn Du regelmĂ€Ăig neue Versionen des Frontends verteilst:
Arbeite mit VersionsprĂŒfung und Auto-Update beim Start.
Beispiel:
If FileDateTime("Z:\Verteilung\Frontend.accdb") > FileDateTime(CurrentDb.Name) Then
MsgBox "Neue Version vorhanden. Anwendung wird aktualisiert.", vbInformation
Shell "cmd /c copy Z:\Verteilung\Frontend.accdb C:\Access\Frontend.accdb", vbHide
Application.Quit
End If
Checkliste fĂŒr saubere Trennung
Punkt | Muss sein |
---|---|
Frontend lokal | â |
Backend zentral (Netzlaufwerk oder SQL Server) | â |
VerknĂŒpfte Tabellen ohne AutoConnect | â |
Keine Makros beim Ăffnen von Tabellen | â |
Abfragen als pass-through, wenn möglich | â |
Formulare nur mit aktuellen DatensĂ€tzen öffnen | â |
Mein Fazit
Trennung lohnt sich.
Du bekommst Geschwindigkeit, StabilitÀt und saubere Upgrades.
Access ist dann kein Flickwerk mehr â sondern ein professionelles Werkzeug.
Wenn Du willst, bauen wir Dir ein Verteilsystem, das automatisch prĂŒft, verknĂŒpft, aktualisiert.
Dann lĂ€uftâs auch im KMU-Alltag zuverlĂ€ssig â norddeutsch solide.
Keine Antworten