Veröffentlicht: 23. Jun 2005
Von Mathias Schiffer
Dieser MSDN Quickie zeigt, wie Sie Access-Datenbanken von Visual Basic .NET aus komprimieren können.
Microsoft Access macht es dem Anwender per Menüsteuerung einfach, angesammelte Datenleichen in Jet-Datenbanken durch Komprimierung zu beseitigen.
Natürlich können Sie für Ihre Jet-Datenbank eine solche Komprimierung auch aus Ihrem Code heraus vornehmen. Schließlich ist Access selber letztlich auch nicht mehr als ein wirklich gutes Frontend für Jet-Datenbanken.
Wählen Sie in Visual Studio .NET über das Menü "Projekt" | "Verweis hinzufügen" aus der Liste der COM-Verweise den Eintrag "Microsoft Jet and Replication Objects #.# Library" aus.
Damit bleibt die Komprimierung einer MDB auch für Ihren Visual Basic .NET-Code kein Hexenwerk mehr: Das JetEngine-Objekt der Bibliothek bietet Ihnen die Methode CompactDatabase an, deren Parameter der Pfad zur bestehenden Datenbankdatei und der Pfad zu der zu erzeugenden, komprimierten Datenbank sind.
Der folgende Beispielcode zeigt auf einfache Weise, wie Sie diese Technologie einsetzen können:
Public Function CompactDatabase(ByVal CurrentDatabasePath As String, _
ByVal NewDatabasePath As String _
) As Boolean
' Komprimiert eine Jet-Datenbank.
' Notwendiger COM-Verweis: "Microsoft Jet and Replication Objects #.# Library"
' CurrentDatabasePath: Kompletter Pfad zur unkomprimierten Jet-Datenbank
' NewDatabasePath: Kompletter Pfad zur neuen, komprimierten Jet-Datenbank
Try
Dim objJetEngine As JRO.JetEngine = New JRO.JetEngine
' Verbindunsgsstring für die Quell-Datenbank erzeugen
Dim strSourceConnectionString As String
strSourceConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & CurrentDatabasePath & ";"
' Verbindunsgsstring für die Ziel-Datenbank erzeugen
Dim strDestinationConnectionString As String
strDestinationConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"
"Data Source=" & NewDatabasePath & ";"
' Die Jet-Engine komprimiert die Datenbank:
objJetEngine.CompactDatabase(strSourceConnectionString, strDestinationConnectionString)
Catch ex As Exception
' Fehlerbehandlung nach Bedarf
End Try
End Function
Mathias Schiffer widmet sich als freier Softwareentwickler und Technologievermittler größeren Projekten ebenso wie arbeitserleichternden Alltagslösungen. Seit Jahren gibt er sein Wissen in unzähligen Publikationen auch an andere Entwickler und Entscheider weiter. Sie erreichen ihn per E-Mail an die Adresse Schiffer@mvps.org.