Die Migration einer Access ADP-Datenbank (.adp) auf das aktuelle ACCDB-Format ist etwas komplexer, weil ADPs technisch anders funktionieren: Sie sind direkt mit einem SQL Server verbunden und enthalten keine lokal gespeicherte Jet/ACE-Datenbankstruktur.
Das Format .adp
wird seit Access 2013 nicht mehr unterstützt.
🛠 Schritt-für-Schritt-Anleitung: Access ADP → ACCDB
🧩 Grundproblem: ADP-Projekte nutzen direkt SQL Server – ACCDBs nicht.
In der ACCDB-Welt wird SQL Server über ODBC als verknüpfte Tabelle eingebunden, nicht direkt wie in einem ADP-Projekt.
🔁 1. Backup erstellen!
Erstelle eine Kopie deiner .adp
-Datei sowie ein Backup der zugrunde liegenden SQL Server-Datenbank.
🧩 2. Überblick über das ADP-Projekt verschaffen
Analysiere deine ADP-Datei:
- Enthält sie gespeicherte Prozeduren oder nur Tabellen?
- Gibt es Formularlogik, die direkt T-SQL verwendet (z. B. über
Me.RecordSource = "EXEC MyProc"
)? - Nutzt sie direkte
CurrentProject.Connection
-Objekte?
→ Je nach Antwort musst du später mit mehr manuellen Anpassungen rechnen.
📦 3. Tabellen und Views in eine SQL Server-Datenbank migrieren
Wenn sie noch nicht im SQL Server liegen, müssen die Tabellen aus der ADP in eine echte SQL Server-Datenbank (z. B. MyAppDB
) übertragen werden. Falls sie dort schon sind: gut!
🧱 4. Neue ACCDB-Datenbank erstellen
Starte Access 2016/2019/365 und wähle leere Datenbank → Speichere als .accdb
.
🔗 5. SQL Server-Tabellen verknüpfen
Über den ODBC-Assistenten:
- In Access: Externe Daten > Neue Datenquelle > Aus anderen Quellen > ODBC-Datenbank
- Wähle „Verknüpfung mit der Quelldatei erstellen“.
- Wähle eine bestehende oder neue ODBC-Verbindung zum SQL Server.
- Verknüpfe alle relevanten Tabellen und Views.
- Access erstellt verknüpfte Tabellen (erscheinen mit einem Globus-Symbol).
🛠 6. Formulare und Berichte migrieren
Formulare aus dem ADP können häufig 1:1 importiert werden:
- In der neuen ACCDB: Import > Aus einer anderen Datenbank > ADP-Datei auswählen
- Formulare, Berichte, Makros, Module importieren.
- Formulare mit direktem SQL-Zugriff müssen angepasst werden:
Me.RecordSource = "EXEC myProcedure"
→ funktioniert nicht mehr direkt- Stattdessen: temporäre Tabelle + Abfrage verwenden oder per VBA ein Recordset laden
💻 7. VBA-Code überarbeiten
ADPs nutzten oft:
CurrentProject.Connection
– funktioniert nicht mehrADO Recordsets
mit direkter Verbindung- Stored Procedures als Datenquelle
Lösungsweg für ACCDB:
- Ersetze
CurrentProject.Connection
durch eine eigene ADO-Connection mit ODBC-String. - Achte auf saubere Fehlerbehandlung und explizites Öffnen/Schließen von Recordsets.
🔧 Beispiel:
Dim conn As Object
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "ODBC;DSN=MeineVerbindung"
conn.Open
📋 8. Gespeicherte Prozeduren in Access nutzen
ACCDB unterstützt keine direkten „Formular-Datenquelle = gespeicherte Prozedur“.
Alternativen:
- Daten per VBA laden:
Dim rs As Object Set rs = CreateObject("ADODB.Recordset") rs.Open "EXEC dbo.myStoredProc", conn Set Me.Recordset = rs
- Oder: SQL Server View anlegen, die die Prozedur ersetzt, falls möglich.
✅ 9. Testen, Testen, Testen!
- Funktionieren Navigation, Formulare, Berichte?
- Gibt es Abfragen mit T-SQL, die Jet nicht versteht?
- Muss Sicherheit oder Benutzersteuerung neu gedacht werden?
📈 10. Optional: Performance-Tuning
- Indizes auf dem SQL Server prüfen
- Nur benötigte Daten laden
- Netzwerkverbindungen testen
📌 Hinweis: ADP-spezifische Features wie z. B. „Serverfilter“, „Server-seitige Sortierung“, „direkte SQL Server-Eigenschaften im Formular“ entfallen vollständig.
Keine Antworten