Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : Access 2013 | Access 2016
Copie et compacte une base de données fermée, et vous donne la possibilité de changer sa version, son ordre de tri, et son chiffrement. (Espaces de travail Microsoft Access uniquement).
Remarque
Lorsque vous utilisez les tableaux liés chiffrés pour une action, mise à jour et requêtes SQL [par exemple, une instruction SQL de mise à jour (CurrentDb.Execute « Mettre à jour... »)], vous devez fournir la clé de chiffrement. Par ailleurs, les tableaux liés sont limités à 19 caractères pour la clé de chiffrement. Voir la sectionTables liés chiffrés à la fin de cette rubrique.
Syntaxe
expression . CompactDatabase(SrcName, DstName, DstLocale, Options, password)
expressionExpression renvoyant un objet DBEngine.
Paramètres
Nom |
Obligatoire/facultatif |
Type de données |
Description |
|---|---|---|---|
SrcName |
Obligatoire |
String |
Identifie une base de données existante, fermée. Il peut s'agir d'un nom de fichier et chemin d'accès complet, par exemple « C:\db1.mdb ». Si le nom de fichier possède une extension, vous devez la spécifier. Si votre réseau assure la prise en charge des chemins d'accès réseau, vous pouvez également préciser celui-ci, par exemple « \\serveur1\partage1\rép1\db1.mdb ». |
DstName |
Obligatoire |
String |
Nom de fichier (et chemin d'accès) de la base de données compactée que vous créez. Il est également possible de spécifier un chemin d'accès réseau. Vous ne pouvez pas utiliser cet argument pour indiquer le même fichier de base de données que SrcName. |
DstLocale |
Facultatif |
Variant |
Expression en chaîne qui spécifie un ordre d’assemblage pour créer DstName, comme spécifié dans Remarques.
|
Options |
Facultatif |
Variant |
Optional. Constante ou combinaison de constantes qui indique une ou plusieurs options, comme indiqué dans la section Remarques. Vous pouvez combiner des options en associant les constantes correspondantes. |
mot de passe |
Facultatif |
Variant |
Expression de chaîne contenant une clé de chiffrement, si la base de données est chiffrée. La chaîne « ; pwd= » doit précéder le mot de passe réel. Si vous incluez un paramètre de mot de passe dans DstLocale, ce paramètre est ignoré. Remarque: il s’agit d’un paramètre obsolète et n’est pas pris en charge dans le format .ACCDB. Pour chiffrer un fichier .ACCDB, utilisez le « pwd = » option chaîne. Il est recommandé d'utiliser des mots de passe forts qui combinent des lettres majuscules et minuscules, des chiffres et des signes. Les mots de passe faibles ne regroupent pas ces éléments. Mot de passe fort : Y6dh!et5. Mot de passe faible : Maison27. Utilisez un mot de passe fort facile à mémoriser afin de ne pas avoir à le noter. |
Remarques
Vous pouvez utiliser l'une des constantes suivantes pour l'argument DstLocale afin de spécifier la propriété CollatingOrderdu texte pour des comparaisons de chaînes.
Constante |
Ordre de classement |
|---|---|
dbLangGeneral |
Anglais, allemand, français, portugais, italien et espagnol |
dbLangArabic |
Arabe |
dbLangChineseSimplified |
Chinois simplifié |
dbLangChineseTraditional |
Chinois traditionnel |
dbLangCyrillic |
Russe |
dbLangCzech |
Tchèque |
dbLangDutch |
Néerlandais |
dbLangGreek |
Grec |
dbLangHebrew |
Hébreu |
dbLangHungarian |
Hongrois |
dbLangIcelandic |
Islandais |
dbLangJapanese |
Japonais |
dbLangKorean |
Coréen |
dbLangNordic |
Langues nordiques (Moteur de base de données Microsoft Jet version 1.0 uniquement) |
dbLangNorwDan |
Norvégien et danois |
dbLangPolish |
Polonais |
dbLangSlovenian |
Slovène |
dbLangSpanish |
Espagnol traditionnel |
dbLangSwedFin |
Suédois et finnois |
dbLangThai |
Thaï |
dbLangTurkish |
Turc |
Vous pouvez utiliser l'une des constantes suivantes dans l'argument options pour spécifier s'il faut chiffrer ou déchiffrer la base de données pendant son compactage.
Remarque
Les constantes dbEncrypt dbDecrypt sont déconseillées et sont pas prises en charge dans les formats de fichier .ACCDB.
Constante |
Description |
|---|---|
dbEncrypt |
Chiffre la base de données pendant le compactage. |
dbDecrypt |
Déchiffre la base de données pendant le compactage. |
Si vous ne spécifiez pas de constante de chiffrement ou que vous incluez à la fois dbDecrypt et dbEncrypt, DstName aura le même chiffrement que SrcName.
Vous pouvez utiliser l'une des constantes suivantes dans l'argument options pour spécifier la version du format de données de la base de données compactée. Cette constante n'affecte que la version du format des données de NomDest mais non la version des objets définis par Microsoft Access, tels que les formulaires et les états.
Constante |
Description |
|---|---|
dbVersion10 |
Crée une base de données qui utilise le format de fichier de la version 1.0 du moteur de base de données Microsoft Jet pendant le compactage. |
dbVersion11 |
Crée une base de données qui utilise le format de fichier de la version 1.1 du moteur de base de données Microsoft Jet pendant le compactage. |
dbVersion20 |
Crée une base de données qui utilise le format de fichier de la version 2.0 du moteur de base de données Microsoft Jet pendant le compactage. |
dbVersion30 |
Crée une base de données qui utilise le format de fichier de la version 3.0 (compatible avec la version 3.5) du moteur de base de données Microsoft Jet pendant le compactage. |
dbVersion40 |
Crée une base de données qui utilise le format de fichier de la version 4.0 du moteur de base de données Microsoft Jet pendant le compactage. |
dbVersion120 |
Crée une base de données qui utilise le format fichier version 12.0 de moteur de base de données Microsoft Access pendant le compactage. |
Vous pouvez spécifier un seul utilisateur par commande. Si vous l'omettez de renseigner une constante de la version, DstName aura la même version que SrcName. Vous ne pouvez compacter DstName que dans une version identique ou supérieure à celle de SrcName.
À mesure que vous modifiez les données dans une base de données, le fichier de base de données peut se fragmenter et utiliser plus d'espace disque que nécessaire. Vous pouvez périodiquement utiliser la méthode CompactDatabase pour compacter la base de données et défragmenter le fichier de base de données. La base compactée est généralement plus petite et s'exécute plus rapidement. Il est également possible de modifier l'ordre de classement, le chiffrement et la version du format de données pendant la copie et le compactage de la base de données.
Vous devez fermer SrcName avant de la compacter. Dans un environnement multi-utilisateur, les autres utilisateurs ne peuvent avoir SrcName ouverte pendant que vous la compactez. Si SrcName n'est pas fermée ou n'est pas accessible en mode exclusif, une erreur se produit.
Dans la mesure où CompactDatabase crée une copie de la base de données, vous devez avoir suffisamment d'espace disque pour la base de données d'origine et la base dupliquée. L'opération de compactage échoue si il n'y a pas suffisamment d'espace disque. La base de données dupliquée DstName ne doit pas nécessairement être sur le même disque que SrcName. Après le compactage réussi d'une base de données, vous pouvez supprimer le fichier SrcName et renommer le fichier DstName compacté avec le nom du fichier d'origine.
La méthode CompactDatabase copie toutes les données et les options d'autorisation de sécurité de la base de données spécifiée par SrcName vers la base de données spécifiée par DstName.
Remarque
Étant donné que la méthodeCompactDatabase ne convertit pas les objets Microsoft Access, vous ne devez pas utiliser CompactDatabase pour convertir une base de données contenant ces objets.
Tableaux liés chiffrés
Les mots de passe chiffrés dépendent du format de fichiers de la base de données que vous utilisez. Si vous utilisez une base de données Access 2003 (.mdb) ou antérieure, vous aurez un mot de passe pour protéger la base de données et un mot de passe distinct pour chiffrer la base de données. Pour les bases de données Access 2007 (.accdb) et version ultérieure (.mdb), la seule option consiste à chiffrer et protéger la base de données avec un mot de passe, comme l’option deux mots de passe distincts a été supprimée.
Remarque
Pour les bases de données Access 2007 (.accdb), le mot de passe est la clé de chiffrement
Vous pouvez utiliser l’exemple suivant du code VBA pour un bouton de commande :
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
Exemple de code suivant montre comment utiliser CompactDatabase avec un mot de passe (clé de chiffrement) et créer un lien à un tableau dans cette base de données compactée. Notez qu’un mot de passe doit être fourni.
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