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:

  1. In Access: Externe Daten > Neue Datenquelle > Aus anderen Quellen > ODBC-Datenbank
  2. Wähle „Verknüpfung mit der Quelldatei erstellen“.
  3. Wähle eine bestehende oder neue ODBC-Verbindung zum SQL Server.
  4. Verknüpfe alle relevanten Tabellen und Views.
  5. 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 mehr
  • ADO 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

Schreibe einen Kommentar

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