OVH Cloud OVH Cloud

compactage

1 réponse
Avatar
Yann
bonjour


Pour Jessy, Raymmond


qui mon aide a faire ma fonction pour un compactage d'une base
mais voila l'orsque que je compile l'application et que je la fasse tournne
avec le runtime le compactage de la base ne fonctione plus

2 question escqu'il pourrait manquer des references ( en compilation il ne
ma rien dit) ?
ou que le code ceu comporte de facon differente avec le runtime.

voici la fonction.


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, "Optimisation du Catalogue LBA-TB en
cours..."
.CloseCurrentDatabase
DBEngine.CompactDataBase strDbFile, strDbFileOld
Kill strDbFile
Name strDbFileOld As strDbFile
.OpenCurrentDatabase strDbFile
.SysCmd acSysCmdClearStatus
End With
Application.Quit
End Function

1 réponse

Avatar
Jessy SEMPERE
Bonjour

Pour utiliser cette fonction, il te faut la rérérence :
"Micorosft Office x.0 Object Library"
à cause de la constante msoFileTypeAllFiles

C'est pour ça et aussi pour simplifier que je t'avais dit de remplacer
la fonction CompactExe() par celle qui suit...
********************************************
Function CompactEXE() As Boolean

Dim strDbFile As String

strDbFile = CurrentDb.Name & ".tmp"

If Dir(strDbFile) <> "" Then Kill strDbFile

DBEngine.CreateDatabase strDbFile, dbLangGeneral

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

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

End Function
********************************************

Sinon il est possible que ça pose problème avec le runtime parcequ'on
lui dit de lancer access à un moment, alors qu'il faudrait peut-être lui
dire de lancer le runtime...
Malheureusement je n'ai pas le runtime pour essayer...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------