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:
- Access 2003:
.mdb
öffnen â als Access 2000 oder 2002 speichern - 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
Tool | Zweck |
---|---|
Access 2003 (oder 2010) | Zwischenschritt zum Ăffnen |
Office 32 Bit | Kompatibel mit altem DAO/VBA |
MZ-Tools | Analyse 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.
No responses yet