<Retour Grenier>

Début de page Question

Comment compacter une base de données en Visual Basic ?

Pour utiliser ce qui suit, vous avez besoin de savoir taper du code Visual Basic dans un module Access, compiler du code, et exécuter du code.

 

Début de page Réponse

Le code qui suit permet de compacter une base de données, mais il ne peut figurer dans la base de données à traiter. Vous devez donc créer une autre base, et vous placerez le code ci-dessous dans un module quelconque de cette autre base.

' --------------------------------------------------
' REPARATION ET COMPACTAGE DE BASE DE DONNEES
' --------------------------------------------------
' Entrée : strBase <- Chemin d'accès à la base de données
'          strTemp <- Nom de la base de données temporaire
'
Function RepairCompact(ByVal strBase As String, ByVal strTemp As String) As Boolean
On Error GoTo RCErr

' Détruire la base temporaire si elle existe
If Dir$(strTemp) <> "" Then Kill strTemp

' Réparer et compacter la base de données
DBEngine.RepairDatabase strBase
DBEngine.CompactDatabase strBase, strTemp

' Si tout a marché, détruire la base d'origine et renommer la base temporaire
Kill strBase
Name strTemp As strBase
RepairCompact = True
Exit Function

RCErr:
    MsgBox "L'erreur suivante s'est produite : " & Err.Description, vbCritical, "Compactage"
    RepairCompact = False
    Exit Function
End Function

Pour tester, ouvrez la fenêtre de debugging, et tapez-y :
? RepairCompact("chemin de la base à compacter", "chemin d'une base temporaire") puis [ENTREE].

Par exemple :
? RepairCompact("c:\mes documents\access\clients.mdb", "c:\mes documents\access\clients.tmp")

Vous pouvez bien sûr placer cette ligne dans le code d'un bouton de commande, sur un formulaire.