Bonjour,
J'ai modifié mes applications VB6 et VB.net accédant à des bases Access pour utiliser le moteur "Microsoft Office 14.0 Access Database engine Object Library".
Cette librairie me permet d'utiliser du code DAO et je compacte les bases Access (2000, 2003, 2010) protégées ou non sans problème - mais j'ai mis du temps à comprendre !
Voici un extrait de code effectuant le compactage d'une base, les instructions varient selon qu'on utilise un fichier système (identification de l'opérateur connecté) ou pas.
S'il on utilise un fichier système je ne prends pas en charge le cas ou la base serait elle-même protégée par mot de passe - je ne pratique pas comme ça.
Si on n'a pas de fichier système la base peut être protégée (variable Pw renseignée) ou pas (Pw = "")
Source = nom complet de la base à compacter
Cible = nom complet de la base compactée
FichierSystème = nom complet du fichier système si utilisé
1 2 3 4 5 6 7 8 9 10 11 12 13
| ' compactage & réparation automatique
If FichierSystème = "" Then ' pas de workgroup, vraisemblablement format 2010
If Pw <> "" Then ' base 2010 protégée par mot de passe contenu dans la variable Pw
Pw = ";pwd=" & Pw
Call DBEngine.CompactDatabase(Source, cible, Pw, , Pw)
Else ' pas de mot de passe
Call DBEngine.CompactDatabase(Source, cible)
End If ' Pw
Else ' utilise l'identification du fichier système; fournis dans cet exemple par les variables gUserId et gUserPwd
DBEngine.DefaultPassword = gUserPwd
DBEngine.DefaultUser = gUserId
Call DBEngine.CompactDatabase(Source, cible)
End If |
En espérant que ça serve...
Partager