DBEngine.CompactDatabase-Methode (DAO)
Gilt für: Access 2013 | Access 2016
Kopiert und komprimiert eine geschlossene Datenbank und bietet die Möglichkeit, ihre Version, Sortierreihenfolge und Verschlüsselung festzulegen. (Nur Microsoft Access-Arbeitsbereiche).
Hinweis
Wenn Sie verschlüsselte verknüpfte Tabellen für action-, update- und SQL-Abfragen verwenden, z. B. eine SQL UPDATE-Anweisung (CurrentDb.Execute „UPDATE..."), müssen Sie den Verschlüsselungsschlüssel angeben. Verknüpfte Tabellen weisen außerdem eine Beschränkung von 19 Zeichen für den Verschlüsselungsschlüssel auf. Weitere Informationen finden Sie im Abschnitt Verschlüsselte verknüpfte Tabellen am Ende dieses Themas.
Syntax
Ausdruck . CompactDatabase(SrcName, DstName, DstLocale, Options, password)
expression Ein Ausdruck, der ein DBEngine-Objekt zurückgibt.
Parameter
Name |
Erforderlich/optional |
Datentyp |
Beschreibung |
---|---|---|---|
SrcName |
Erforderlich |
String |
Gibt eine vorhandene geschlossene Datenbank an. Kann ein vollständiger Pfad und Dateiname sein, wie z. B. „C:\db1.mdb“. Wenn der Dateiname eine Erweiterung hat, müssen Sie diese angeben. Wenn Ihr Netzwerk dies unterstützt, können Sie auch einen Netzwerkpfad wie z. B. „\\server1\share1\dir1\db1.mdb“ angeben. |
DstName |
Erforderlich |
Zeichenfolge |
Der Dateiname (und Pfad) der komprimierten Datenbank, die Sie erstellen. Sie können auch einen Netzwerkpfad angeben. Mit diesem Argument kann nicht die gleiche Datenbankdatei angegeben werden wie mit SrcName. |
DstLocale |
Optional |
Variant |
Ein Zeichenfolgenausdruck, der eine Sortierreihenfolge zum Erstellen von DstName angibt, wie unter „Hinweise“ angegeben.
|
Optionen |
Optional |
Variante |
Optional. Ein Konstante oder Kombination aus Konstanten, mit der mindestens eine Option angegeben wird, wie unter „Hinweise" angegeben. Sie können Optionen durch Summieren der entsprechenden Konstanten kombinieren. |
password |
Optional |
Variant |
Ein Zeichenfolgenausdruck, der einen Verschlüsselungsschlüssel enthält, wenn die Datenbank verschlüsselt ist. Die Zeichenfolge „; Pwd =" muss vor dem eigentlichen Kennwort stehen. Wenn Sie eine Kennworteinstellung in DstLocale einschließen, wird diese Einstellung ignoriert. HINWEIS: Dies ist ein veralteter Parameter, der im ACCDB-Format nicht unterstützt wird. Zum Verschlüsseln einer ACCDB-Datei, verwenden Sie die "pwd="-Optionszeichenfolge. Verwenden Sie sichere Kennwörter, die Groß- und Kleinbuchstaben, Zahlen und Symbole in Kombination verwenden. Unsichere Kennwörter enthalten keine Kombination dieser Elemente. Sicheres Kennwort: Y6dh!et5. Unsicheres Kennwort: Haus27. Verwenden Sie ein sicheres Kennwort, das Sie sich merken können, damit Sie es nicht aufschreiben müssen. |
Bemerkungen
Sie können eine der folgenden Konstanten für das DstLocale-Argument verwenden, um die CollatingOrder -Eigenschaft für Zeichenfolgenvergleiche von Text anzugeben.
Konstante |
Sortierreihenfolge |
---|---|
dbLangGeneral |
Englisch, Deutsch, Französisch, Portugiesisch, Italienisch und modernes Spanisch |
dbLangArabic |
Arabic |
dbLangChineseSimplified |
Chinesisch (vereinfacht) |
dbLangChineseTraditional |
Chinesisch (traditionell) |
dbLangCyrillic |
Russisch |
dbLangCzech |
Tschechisch |
dbLangDutch |
Niederländisch |
dbLangGreek |
Griechisch |
dbLangHebrew |
Hebräisch |
dbLangHungarian |
Ungarisch |
dbLangIcelandic |
Isländisch |
dbLangJapanese |
Japanisch |
dbLangKorean |
Koreanisch |
dbLangNordic |
Nordeuropäische Sprachen (nur Version 1.0 des Microsoft Jet-Datenbankmoduls) |
dbLangNorwDan |
Norwegisch und Dänisch |
dbLangPolish |
Polnisch |
dbLangSlovenian |
Slowenisch |
dbLangSpanish |
Spanisch (Traditionell) |
dbLangSwedFin |
Schwedisch und Finnisch |
dbLangThai |
Thailändisch |
dbLangTurkish |
Türkisch |
Sie können eine der folgenden Konstanten im options-Argument verwenden, um anzugeben, ob die Datenbank während der Komprimierung verschlüsselt werden soll.
Hinweis
Die Konstanten dbEncrypt und dbDecrypt sind veraltet und werden im ACCDB-Dateiformat nicht unterstützt.
Konstante |
Beschreibung |
---|---|
dbEncrypt |
Verschlüsselt die Datenbank beim Komprimieren. |
dbDecrypt |
Entschlüsselt die Datenbank beim Komprimieren. |
Wenn Sie keine Verschlüsselungskonstante angeben, oder wenn Sie sowohl DbDecrypt als auch DbEncrypt einschließen, hat DstName die gleiche Verschlüsselung wie SrcName.
Sie können eine der folgenden Konstanten im options-Argument verwenden, um die Version des Datenformats für die komprimierte Datenbank anzugeben. Diese Konstante betrifft nur die Version des Datenformats von DstName und hat keine Auswirkungen auf die Version von von Microsoft Access definierten Objekten, wie Formulare und Berichte.
Konstante |
Beschreibung |
---|---|
dbVersion10 |
Erstellt eine Datenbank, die beim Komprimieren das Dateiformat der Version 1.0 des Microsoft Jet-Datenbankmoduls verwendet. |
dbVersion11 |
Erstellt eine Datenbank, die beim Komprimieren das Dateiformat der Version 1.1 des Microsoft Jet-Datenbankmoduls verwendet. |
dbVersion20 |
Erstellt eine Datenbank, die beim Komprimieren das Dateiformat der Version 2.0 des Microsoft Jet-Datenbankmoduls verwendet. |
dbVersion30 |
Erstellt eine Datenbank, die beim Komprimieren das Dateiformat der Version 3.0 des Microsoft Jet-Datenbankmoduls (kompatibel mit Version 3.5) verwendet. |
dbVersion40 |
Erstellt eine Datenbank, die beim Komprimieren das Dateiformat der Version 4.0 des Microsoft Jet-Datenbankmoduls verwendet. |
dbVersion120 |
Erstellt eine Datenbank, die beim Komprimieren das Dateiformat der Version 12.0 des Microsoft Access-Datenbankmoduls verwendet. |
Sie können nur eine Versionskonstante angeben. Wenn Sie keine Versionskonstante angeben, hat DstName die gleiche Version wie SrcName. Sie können DstName nur auf eine Version komprimieren, die der von SrcName entspricht oder höher ist.
Wenn Sie Daten in einer Datenbank ändern, kann die Datenbankdatei fragmentiert werden und mehr Speicherplatz belegen als erforderlich. Sie können die Datenbank in regelmäßigen Abständen mit der CompactDatabase -Methode komprimieren, um die Datenbankdatei zu defragmentieren. Die komprimierte Datenbank ist in der Regel kleiner und wird oft schneller ausgeführt. Sie können auch die Sortierreihenfolge, die Verschlüsselung oder die Version des Datenformats ändern, während Sie die Datenbank kopieren und komprimieren.
Sie müssen SrcName schließen, bevor Sie die Datenbank komprimieren. In einer Mehrbenutzerumgebung darf SrcName während der Komprimierung nicht von einem anderen Benutzer geöffnet sein. Wenn SrcName nicht geschlossen oder nicht für die exklusive Verwendung verfügbar ist, tritt ein Fehler auf.
Da CompactDatabase eine Kopie der Datenbank erstellt, muss genügend Speicherplatz für das Original und die Kopie der Datenbank vorhanden sein. Wenn nicht genügend Speicherplatz vorhanden ist, tritt bei der Komprimierung ein Fehler auf. Die Kopie der DstName-Datenbank muss sich nicht auf demselben Datenträger wie SrcName befinden. Nach erfolgreicher Komprimierung einer Datenbank können Sie die SrcName-Datei löschen und die komprimierte DstName-Datei in den ursprünglichen Dateinamen umbenennen.
Die CompactDatabase-Methode kopiert alle Daten und die Einstellungen für die Sicherheitsberechtigung aus der durch SrcName angegebenen Datenbank in die durch DstName angegebene Datenbank.
Hinweis
Da die CompactDatabase-Methode keine Microsoft Access-Objekte konvertiert, sollten Sie CompactDatabase nicht zum Konvertieren einer Datenbank verwenden, die solche Objekte enthält.
Verschlüsselte verknüpfte Tabellen
Verschlüsselte Kennwörter sind vom Dateiformat der Datenbank, die Sie verwenden, abhängig. Wenn Sie eine Access 2003 (.mdb) oder frühere Version der Datenbank verwenden, haben Sie ein Kennwort zum Schützen der Datenbank und ein weiteres Kennwort zum Verschlüsseln der Datenbank. Bei Datenbanken der Version Access 2007 (.accdb) und höher (.mdb) können Sie die Datenbank nur mit einem Kennwort verschlüsseln und schützen, da die Option zur Verwendung von zwei verschiedenen Kennwörtern entfernt wurde.
Hinweis
Für Access 2007-Datenbanken (ACCDB) ist das Kennwort der Verschlüsselungsschlüssel.
Sie können den folgenden VBA-Beispielcode für eine Befehlsschaltfläche verwenden:
Private Sub Command0_Click()
Dim strSourcePath As String
Dim strDestPath As String
strSourcePath = "<path>\sourceDb.accdb"
strDestPath = "<path>\destDb.accdb"
DBEngine.CompactDatabase strSourcePath, strDestPath, dbLangGeneral & ";pwd=Access", dbVersion120, ";pwd=Access"
Set CurrentDatabase = CurrentDb
Set LinkedTableDef = CurrentDatabase.CreateTableDef
("My Linked Table")
LinkedTableDef.Connect = "MS Access;pwd=Access";database=" & strDestPath
LinkedTableDef.RefreshLink
MsgBox "Finished"
End Sub
Im folgenden Codebeispiel wird gezeigt, wie Sie CompactDatabase mit einem Kennwort (Verschlüsselungsschlüssel) verwenden und dann eine Verknüpfung zu einer Tabelle in dieser komprimierten Datenbank herstellen. Beachten Sie, dass ein Kennwort eingegeben werden muss.
Private Sub CompactAndLink_Click()
Dim strSourcePath As String
Dim strDestPath As String
Dim strSourceTableName As String
Dim strDestTableName As String
Dim tdf As TableDef
strSourcePath = "<path>\<database>.accdb"
strDestPath = "<path>\<database>.accdb"
strSourceTableName = "<table name in destination database>"
strDestTableName = "<linked table name>"
' Compact source database into new destination database with encrypted password
DBEngine.CompactDatabase strSourcePath, strDestPath, dbLangGeneral & ";pwd=Access", dbVersion120, ";pwd=Access"
' Link to one of the tables in the destination database
' Password must be provided in the Connect property
Set CurrentDatabase = CurrentDb
Set tdf = CurrentDatabase.CreateTableDef(strDestTableName)
With tdf
.Connect = ";pwd=Access" & ";DATABASE=" & strDestPath
.SourceTableName = strSourceTableName
End With
CurrentDatabase.TableDefs.Append tdf
MsgBox "Database compacted and encrypted password applied. Link to table also completed."
End Sub