OVH Cloud OVH Cloud

Compactage automatique

4 réponses
Avatar
Luis
Bonjour,
Il y aquelque temps j'avais t=E9l=E9charg=E9 une application=20
pour compacter et r=E9parer la base, je ne me rappele plus=20
chez qui? mais elle fonctionne tr=E8s bien.

L=E0 je viens de faire une petite base simple et j'ai=20
recopi=E9 le module, macros et commande, mais sur cette base=20
je ne peux pas compacter plus d'une fois, car j'ai ce=20
message: "Erreur d'ex=E9cution 3240", La base de donn=E9es=20
existe d=E9j=E0.

Je n'avais jamais eu ce probl=E8me. Pourquoi cette nouveaut=E9?
Merci pour votre aide.
Luis

4 réponses

Avatar
3stone
Salut,

"Luis"
Il y aquelque temps j'avais téléchargé une application
pour compacter et réparer la base, je ne me rappele plus
chez qui? mais elle fonctionne très bien.

Là je viens de faire une petite base simple et j'ai
recopié le module, macros et commande, mais sur cette base
je ne peux pas compacter plus d'une fois, car j'ai ce
message: "Erreur d'exécution 3240", La base de données
existe déjà.


Soit, ton code n'est plus complet... et tu ne supprime pas
l'ancienne base après le compactage...
soit, le compactage ne se passe pas bien...

Arrive-tu à compacter "à la main" ?


--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
Avatar
Luis
Bonjour,
Oui, le compactage à la main fonctionne.
Que faut-il supprimer, dans les autres bases où cette
fonction est installée il n'y a pas besoin de supprimer de
base. Car après le compactage auto, il y a simplement un
fichier par exemple "bd1.mdb.tmp" et je n'ai jamais rien
supprimé.
C'est ce changement de comportement qui m'étonne.
Pour vérification voilà ce qui est dans la base:
1 Macro: mcrCompact
ExécuterCode
=Compact()
1 Module:modCompctCurrentDb
Option Compare Database
Option Explicit

Function CompactEXE() As Boolean

Dim strDbFile As String

strDbFile = CurrentDb.Name & ".tmp"

With Application.FileSearch
.LookIn = Left(strDbFile, _
Len(strDbFile) - (Len(Dir(strDbFile)) + 1))
.FileName = Dir(strDbFile)
.FileType = msoFileTypeAllFiles
If .Execute = 1 Then Kill strDbFile
End With

DBEngine.CreateDatabase strDbFile, dbLangGeneral

DoCmd.CopyObject strDbFile, , acMacro, "mcrCompact"
DoCmd.CopyObject strDbFile, ,
acModule, "modCompactCurrentDb"

Shell "MSACCESS.EXE """ & strDbFile & """ /x
mcrCompact", _
vbMinimizedNoFocus

End Function

Public Function Compact()
Dim acApp As Access.Application
Dim strDbPath As String, strDbFile As String
Dim strDbFileOld As String

strDbPath = CurrentDb.Name
strDbFile = Left(strDbPath, Len(strDbPath) - 4)
strDbFileOld = Left(strDbFile, Len(strDbFile) - 4)
& ".old"

Set acApp = GetObject(strDbFile)

With acApp
.SysCmd acSysCmdSetStatus, "Compactage en cours..."
.CloseCurrentDatabase
DBEngine.CompactDataBase strDbFile, strDbFileOld
Kill strDbFile
Name strDbFileOld As strDbFile
.OpenCurrentDatabase strDbFile
.SysCmd acSysCmdClearStatus
End With
Application.Quit
End Function

1 Commande:Exécuter_macro
On Error GoTo Err_Exécuter_macro_Click

Dim stDocName As String

stDocName = "mmbrApplication.&Compactage"
DoCmd.RunMacro stDocName

Exit_Exécuter_macro_Click:
Exit Sub

Err_Exécuter_macro_Click:
MsgBox Err.Description
Resume Exit_Exécuter_macro_Click

Si avec ça tu peux vir s'il manque quelque chose?
Merci à bientôt.
Luis

-----Message d'origine-----
Salut,

"Luis"
Il y aquelque temps j'avais téléchargé une application
pour compacter et réparer la base, je ne me rappele plus
chez qui? mais elle fonctionne très bien.

Là je viens de faire une petite base simple et j'ai
recopié le module, macros et commande, mais sur cette base
je ne peux pas compacter plus d'une fois, car j'ai ce
message: "Erreur d'exécution 3240", La base de données
existe déjà.


Soit, ton code n'est plus complet... et tu ne
supprime pas

l'ancienne base après le compactage...
soit, le compactage ne se passe pas bien...

Arrive-tu à compacter "à la main" ?


--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------



.



Avatar
3stone
Salut,

"Luis"
Oui, le compactage à la main fonctionne.
Que faut-il supprimer, dans les autres bases où cette
fonction est installée il n'y a pas besoin de supprimer de
base. Car après le compactage auto, il y a simplement un
fichier par exemple "bd1.mdb.tmp" et je n'ai jamais rien
supprimé.


Ton code vient de chez Jessy... (c'est lui qui me la dit ;-))

Utilise sa nouvelle version
http://access.jessy.free.fr/index.html?Menu=8&Page=CompactDb

cela devrait résoudre le problème de référence que tu semble avoir...



--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------
Avatar
Luis
Bonjour,
Merci pour le tuyau.
A bientôt.
Luis
-----Message d'origine-----
Salut,

"Luis"
Oui, le compactage à la main fonctionne.
Que faut-il supprimer, dans les autres bases où cette
fonction est installée il n'y a pas besoin de supprimer de
base. Car après le compactage auto, il y a simplement un
fichier par exemple "bd1.mdb.tmp" et je n'ai jamais rien
supprimé.


Ton code vient de chez Jessy... (c'est lui qui me la
dit ;-))


Utilise sa nouvelle version
http://access.jessy.free.fr/index.html?
Menu=8&Page=CompactDb


cela devrait résoudre le problème de référence que tu
semble avoir...




--
A+
Pierre (3stone) Access MVP
-------------------------------------------------------
Bien démarrer ? c'est ici http://users.skynet.be/mpfa/
( Je ne réponds pas aux emails qui concernent Access )
-------------------------------------------------------



.