Warum Du Dich jetzt kĂŒmmern solltest

Access 97 ist ĂŒber 25 Jahre alt.
Kein Support. Keine KompatibilitÀt mit Office 64 Bit.
Und spĂ€testens mit Windows 11 ist Schluss – die .mdb lĂ€sst sich oft nicht mal mehr öffnen.

Wenn Du also noch eine 97er-Datenbank im Haus hast: jetzt modernisieren.
Sonst steht der Betrieb plötzlich still.

Erste HĂŒrde: Öffnen der .mdb-Datei

Moderne Access-Versionen können Access-97-Dateien nicht direkt öffnen.
Du brauchst Access 2003 oder 2010 als Zwischenschritt.

Ablauf:

  1. Access 2003: .mdb öffnen → als Access 2000 oder 2002 speichern
  2. Access 2010/2013: erneut öffnen und als .accdb speichern

Wenn Du das nicht mehr selbst kannst: virtuelle Maschine, z. B. mit Windows XP + Access 2003.

Tools fĂŒr die Migration

ToolZweck
Access 2003 (oder 2010)Zwischenschritt zum Öffnen
Office 32 BitKompatibel mit altem DAO/VBA
MZ-ToolsAnalyse von VBA-Projekten
Access Analyzer (FMS)AbhĂ€ngigkeitsprĂŒfung, Performance
VBA-Inspector (Eigenbau)Suche nach Altlasten im Code

Typische Probleme bei der Umstellung

1. API-Deklarationen ohne PtrSafe

Declare Function GetTickCount Lib "kernel32" () As Long

Muss ersetzt werden durch:

#If VBA7 Then
    Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long
#Else
    Declare Function GetTickCount Lib "kernel32" () As Long
#End If

2. DAO 3.5 Referenz fehlt

Alte Datenbanken nutzen DAO 3.5 – das gibt’s nicht mehr.
Du musst auf DAO 3.6 oder Microsoft Office xx.0 Access database engine object library umstellen.

Im Code: Typen explizit deklarieren:

Dim db As DAO.Database
Dim rs As DAO.Recordset

3. Formulare ohne Ereignisbindung

Access 97 hat Ereignisprozeduren teilweise als Text gespeichert.
Beim Öffnen in Access 2016+ fehlen dann die Bindungen.
Manuelle Nachpflege nötig.

Empfehlung: Schrittweises Vorgehen

1. Sicherung der Originaldatenbank

2. Umwandlung in Access 2000 oder 2002

3. Umwandlung in .accdb

4. Referenzen prĂŒfen und korrigieren

5. Code-Scan auf veraltete Syntax

6. Tests mit 64 Bit Office

7. Performance und FunktionalitÀt testen

Eigene Scans auf Altlasten

Public Sub ScanneDeklarationen()
    Dim comp As Object, i As Long, zeile As String
    For Each comp In Application.VBE.ActiveVBProject.VBComponents
        For i = 1 To comp.CodeModule.CountOfLines
            zeile = comp.CodeModule.Lines(i, 1)
            If InStr(zeile, "Declare Function") > 0 And InStr(zeile, "PtrSafe") = 0 Then
                Debug.Print "Fehlendes PtrSafe in: " & comp.Name & " Zeile " & i
            End If
        Next i
    Next
End Sub

Und wenn gar nichts mehr geht?

Dann:

  • Struktur nachbauen (Tabellen, Beziehungen, Formulare)
  • Daten per TransferDatabase importieren
  • Module stĂŒckweise ĂŒbernehmen
  • oder: nur die Logik extrahieren und komplett neu bauen

Access 97 war robust – aber es ist durch.

Wenn Du es heute noch betreibst, brauchst Du dringend eine Exit-Strategie.
Mit den richtigen Tools und etwas Geduld kannst Du die Lösung retten.
Oder gleich besser machen als vorher.

Wenn Du willst, helf ich Dir dabei – pragmatisch, systematisch, ohne viel Gewese.

Categories:

Tags:

No responses yet

Schreibe einen Kommentar

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