Rubrik: Datenbanken · DAO | VB-Versionen: VB4, VB5, VB6 | 29.04.01 |
Datenbanken komprimieren mit DAO Zeigt, wie man eine Access-Datenbank unter VB komprimiert und fragt ggf. ein Paßwort ab. | ||
Autor: Jens Brunsen | Bewertung: | Views: 23.136 |
www.vb-power.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Access-Datenbanken haben eine "kleine" Eigenart an sich: Werden viele Datensätze hinzugefügt, oder auch viele Datensätze aus der Datenbank gelöscht, wächst die Dateigröße der Datenbank-Datei extrem an. Um die Datenbank-Größe wieder zu reduzieren stellt die Jet-Engine eine entsprechenden Befehl bereit: CompactDatabase
Wir zeigen Ihnen hier, wie Sie den Befehl richtig einsetzen. Sollte die Datenbank mit einem Passwort geschützt sein, wird ggf. noch das Paßwort abgefragt.
Noch ein Hinweis: Für das Komprimieren der Datenbank wird autom. eine neue Datenbank-Datei erstellt. Nach dem Komprimieren muss also die Originaldatei gelöscht und die neue Datei in die Originaldatei umbenannt werden. Diesen Vorgang übernimmt ebenfalls unsere Funktion dbCompact.
Public password As String ' Datenbank komprimieren Public Function dbCompact(ByVal dbName As String) As Boolean Dim Quelle As String On Local Error GoTo dbCompact_Error dbCompact = False ' Prüfen, ob Datei existiert If Dir(dbName) <> "" Then Screen.MousePointer = 11 Quelle = Left$(dbName, InStrRev(dbName, ".") - 1) ' Datenbank komprimieren (ohne Passwort) Err.Number = 0 CompactDatabase dbName, Quelle & ".$$$" ' Fehler: Datenbank passwortgeschützt While Err.Number = 3031 ' Dialog zur Eingabe des Passworts aufrufen Screen.MousePointer = 0 ' Das Passwort wird in der öffentlichen Variablen ' password gespeichert frm_password.Show 1 Screen.MousePointer = 11 ' Neuer Versuch mit Passwort-Angabe Err.Number = 0 CompactDatabase dbName, Quelle & ".$$$", , , _ ";pwd=" & password Wend On Local Error GoTo 0 ' Originaldatei löschen Kill dbName ' Umbenennen der neuen Datei in die Originaldatei Name Quelle & ".$$$" As dbName Screen.MousePointer = 0 MsgBox "Komprimierung erfolgreich abgeschlossen!", 64, _ "Information" dbCompact = True Else MsgBox "Datenbank " & dbName & " nicht gefunden!", _ vbCritical, "Fehler" End If Exit Function dbCompact_Error: If Err.Number = 3031 Then Resume Next If Err.Number <> 32755 Then MsgBox Err.Description & " (" & Err.Number & ")", _ vbCritical, "Fehler" End If Screen.MousePointer = 0 End Function
Alles, was Sie jetzt noch selber machen müssen ist das Bereitstellen eines Formulars für die Passwort-Eingabe. Beim Schließen dieses Formulars teilen Sie der aufrufenden Form das Passwort dann mit:
frmMain.Password = txtPassword.Text