OVH Cloud OVH Cloud

compactage

21 réponses
Avatar
Yann
bonjours

Je voudrait faire un compatage de ma base de donne a la femeture de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je voudrais qu'il
fasse le compactage tous seul

10 réponses

1 2 3
Avatar
Jessy SEMPERE
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor t'avais
demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la femeture de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je voudrais qu'il
fasse le compactage tous seul




Avatar
Yann
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau des
information quelle contient par contre l'utilisateur en faisant c'est
requête ferra grossir cette base d'une 50 de Mo donc pour éviter des
désagrément pour l'utilisateur final je voudrais que ça ne le fasse que de
temps en temps il mais donc impossible de la compacter a chaque fermeture.

"Jessy SEMPERE" a écrit dans le message de news:
bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor t'avais
demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la femeture de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je voudrais
qu'il


fasse le compactage tous seul








Avatar
Jessy SEMPERE
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur l'ouverture de
ton
formulaire d'ouverture ou alors sur une macro Autoexec qui lancera ce code.

Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple contenant
le code nécessaire à mettre dans un module de ta base de donnée.

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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau des
information quelle contient par contre l'utilisateur en faisant c'est
requête ferra grossir cette base d'une 50 de Mo donc pour éviter des
désagrément pour l'utilisateur final je voudrais que ça ne le fasse que de
temps en temps il mais donc impossible de la compacter a chaque fermeture.

"Jessy SEMPERE" a écrit dans le message de
news:

bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor t'avais
demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la femeture de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je voudrais
qu'il


fasse le compactage tous seul












Avatar
Yann
Re Jessy
J'ais intégrer le code que tu ma donner sur la form de demarage (le menu des
utilisateur) et ça ne marche pas ,à savoir j'ais une forme "Splach" pour
afficher le logo de mon applys. en tous première c'est peut être sur celui
la qui fau placer le code


"Jessy SEMPERE" a écrit dans le message de news:
bg2rms$g35$
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur l'ouverture
de

ton
formulaire d'ouverture ou alors sur une macro Autoexec qui lancera ce
code.


Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple contenant
le code nécessaire à mettre dans un module de ta base de donnée.

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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau des
information quelle contient par contre l'utilisateur en faisant c'est
requête ferra grossir cette base d'une 50 de Mo donc pour éviter des
désagrément pour l'utilisateur final je voudrais que ça ne le fasse que
de


temps en temps il mais donc impossible de la compacter a chaque
fermeture.



"Jessy SEMPERE" a écrit dans le message de
news:

bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor t'avais
demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la femeture de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je voudrais
qu'il


fasse le compactage tous seul
















Avatar
Yann
et j'ais un message Erreur d'execution 6 depassement de capaciter
c'est grave docteur
Merci
"Jessy SEMPERE" a écrit dans le message de news:
bg2rms$g35$
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur l'ouverture
de

ton
formulaire d'ouverture ou alors sur une macro Autoexec qui lancera ce
code.


Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple contenant
le code nécessaire à mettre dans un module de ta base de donnée.

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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau des
information quelle contient par contre l'utilisateur en faisant c'est
requête ferra grossir cette base d'une 50 de Mo donc pour éviter des
désagrément pour l'utilisateur final je voudrais que ça ne le fasse que
de


temps en temps il mais donc impossible de la compacter a chaque
fermeture.



"Jessy SEMPERE" a écrit dans le message de
news:

bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor t'avais
demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la femeture de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je voudrais
qu'il


fasse le compactage tous seul
















Avatar
Jessy SEMPERE
oui je n'avais pas calculé combien d'octet ça représentais...

remplaces la code du formulaire par :

Dim dbl As Double
dbl = FileLen(CurrentDb.Name)
If dbl > (150 * 1024 * 1024) Then CompactEXE

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
et j'ais un message Erreur d'execution 6 depassement de capaciter
c'est grave docteur
Merci
"Jessy SEMPERE" a écrit dans le message de
news:

bg2rms$g35$
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur
l'ouverture


de
ton
formulaire d'ouverture ou alors sur une macro Autoexec qui lancera ce
code.


Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple contenant
le code nécessaire à mettre dans un module de ta base de donnée.

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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau des
information quelle contient par contre l'utilisateur en faisant c'est
requête ferra grossir cette base d'une 50 de Mo donc pour éviter des
désagrément pour l'utilisateur final je voudrais que ça ne le fasse
que



de
temps en temps il mais donc impossible de la compacter a chaque
fermeture.



"Jessy SEMPERE" a écrit dans le message de
news:

bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor t'avais
demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la femeture
de





l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je
voudrais





qu'il
fasse le compactage tous seul




















Avatar
Raymond
Bonjour Jessy.

Je confirme :
Access 2000, 2002 et 2003 pas de problème ce matin. strDbFile contient-il
une bonne valeur ? mettre un msgbox avant de créer la base.

Qui peut savoir demain ? la sècheresse, les orages, les vacances ?

--
@+
Raymond Access MVP.
http://access.seneque.free.fr/
http://users.skynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA.


"Jessy SEMPERE" a écrit dans le message de
news:bg7q13$set$
Bonjour

euh.... là j'ai un peu de mal...

honnêtement là je ne comprends pas, tu dis que c'est sur la ligne
DBEngine.CreateDatabase strDbFile, dbLangGeneral
que ça plante et que ça te met argument non valide.

Sous access 97 ça marche parfaitement, mais sous XP ???
Je ne peux pas te dire, je n'ai pas XP pour tester mais peut-être
que Raymond pourrait-en dire plus...

Désolé mais là je sèche


Avatar
Yann
j'ais modifier le code mais toujour rien

le code modifier

Option Compare Database
Option Explicit

Function CompactEXE() As Boolean

Dim strDbFile As String
'strDbFile = CurrentDb.Name & ".tmp"
strDbFile = "D:ApplysLBA&tarif.mdb"

With Application.FileSearch
' .LookIn = Left(strDbFile, Len(strDbFile) - (Len(Dir(strDbFile)) +
1))
.LookIn = "D:ApplysLBA&tarif"
.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)
'strDbFile = (Len(strDbPath) - 4)
strDbFile = "D:ApplysLBA&tarif.mdb"
'strDbFileOld = Left(strDbFile, Len(strDbFile) - 4) & ".old"
strDbFileOld = "D:ApplysLBA&tarif.old"

'Set acApp = GetObject(strDbFile)
Set acApp = GetObject("D:ApplysLBA&tarif.mdb")

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



quand j'ecrie compact dans la fenetre d'execution j'ais bien la base qui ce
ferme affiche Compactage en cours (qu'il ne fait pas)et puis plus rien
Access reste ouver sans base et le messages en bas a gauche "compactae en
cours".



"Jessy SEMPERE" a écrit dans le message de news:
bg7q13$set$
Bonjour

euh.... là j'ai un peu de mal...

honnêtement là je ne comprends pas, tu dis que c'est sur la ligne
DBEngine.CreateDatabase strDbFile, dbLangGeneral
que ça plante et que ça te met argument non valide.

Sous access 97 ça marche parfaitement, mais sous XP ???
Je ne peux pas te dire, je n'ai pas XP pour tester mais peut-être
que Raymond pourrait-en dire plus...

Désolé mais là je sèche

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
bonjour Jessy.

Je suis un paut dure je ne comprend pas mettre la taille en double au
lieu


long pareille par contre variant il s'en fou ! :-)
le s'executer mais il y a un probleme sur le module a la ligne suivante
,


en
plus je comprendre rien a DBengine :-)

DBEngine.CreateDatabase strDbFile, dbLangGeneral

dbLanGeneral pas de varaible declarer
le code continue , argument non valide erreur 3001

DBEngine.CreateDatabase strDbFile, dbLangGeneral


C'est quoi ?
Merci

"Jessy SEMPERE" a écrit dans le message de
news:

bg3cje$qbm$
oui je n'avais pas calculé combien d'octet ça représentais...

remplaces la code du formulaire par :

Dim dbl As Double
dbl = FileLen(CurrentDb.Name)
If dbl > (150 * 1024 * 1024) Then CompactEXE

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
et j'ais un message Erreur d'execution 6 depassement de capaciter
c'est grave docteur
Merci
"Jessy SEMPERE" a écrit dans le message
de




news:
bg2rms$g35$
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur
l'ouverture


de
ton
formulaire d'ouverture ou alors sur une macro Autoexec qui lancera
ce




code.

Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple
contenant




le code nécessaire à mettre dans un module de ta base de donnée.

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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau
des






information quelle contient par contre l'utilisateur en faisant
c'est




requête ferra grossir cette base d'une 50 de Mo donc pour éviter
des





désagrément pour l'utilisateur final je voudrais que ça ne le
fasse





que
de
temps en temps il mais donc impossible de la compacter a chaque
fermeture.



"Jessy SEMPERE" a écrit dans le
message





de
news:
bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est qu'un
jour ta base fera tout le temps plus de 100 Mo même compacter
vu qu'au fil du temps tu vas l'incrémenter avec des données
donc







ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor
t'avais






demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la
femeture







de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access je
voudrais





qu'il
fasse le compactage tous seul
































Avatar
Jessy SEMPERE
Alors :
Le but est de compacter la base de donnée en cours ???
En fait la fonction à lancer et CompactExe() et non Compact()
Ensuite je n'avais pas encore mis sur mon site la nouvelle version à
télécharger mais pour simplifier, remplaces la fonction CompactExe()
par ce 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
********************************************
Pour le reste garde le code initial et re-essais...

Alors ça marche ???

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#ioU#
j'ais modifier le code mais toujour rien

le code modifier

Option Compare Database
Option Explicit

Function CompactEXE() As Boolean

Dim strDbFile As String
'strDbFile = CurrentDb.Name & ".tmp"
strDbFile = "D:ApplysLBA&tarif.mdb"

With Application.FileSearch
' .LookIn = Left(strDbFile, Len(strDbFile) - (Len(Dir(strDbFile)) +
1))
.LookIn = "D:ApplysLBA&tarif"
.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)
'strDbFile = (Len(strDbPath) - 4)
strDbFile = "D:ApplysLBA&tarif.mdb"
'strDbFileOld = Left(strDbFile, Len(strDbFile) - 4) & ".old"
strDbFileOld = "D:ApplysLBA&tarif.old"

'Set acApp = GetObject(strDbFile)
Set acApp = GetObject("D:ApplysLBA&tarif.mdb")

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



quand j'ecrie compact dans la fenetre d'execution j'ais bien la base qui
ce

ferme affiche Compactage en cours (qu'il ne fait pas)et puis plus rien
Access reste ouver sans base et le messages en bas a gauche "compactae en
cours".



"Jessy SEMPERE" a écrit dans le message de
news:

bg7q13$set$
Bonjour

euh.... là j'ai un peu de mal...

honnêtement là je ne comprends pas, tu dis que c'est sur la ligne
DBEngine.CreateDatabase strDbFile, dbLangGeneral
que ça plante et que ça te met argument non valide.

Sous access 97 ça marche parfaitement, mais sous XP ???
Je ne peux pas te dire, je n'ai pas XP pour tester mais peut-être
que Raymond pourrait-en dire plus...

Désolé mais là je sèche

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
bonjour Jessy.

Je suis un paut dure je ne comprend pas mettre la taille en double au
lieu


long pareille par contre variant il s'en fou ! :-)
le s'executer mais il y a un probleme sur le module a la ligne
suivante



,
en
plus je comprendre rien a DBengine :-)

DBEngine.CreateDatabase strDbFile, dbLangGeneral

dbLanGeneral pas de varaible declarer
le code continue , argument non valide erreur 3001

DBEngine.CreateDatabase strDbFile, dbLangGeneral


C'est quoi ?
Merci

"Jessy SEMPERE" a écrit dans le message de
news:

bg3cje$qbm$
oui je n'avais pas calculé combien d'octet ça représentais...

remplaces la code du formulaire par :

Dim dbl As Double
dbl = FileLen(CurrentDb.Name)
If dbl > (150 * 1024 * 1024) Then CompactEXE

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
et j'ais un message Erreur d'execution 6 depassement de
capaciter





c'est grave docteur
Merci
"Jessy SEMPERE" a écrit dans le
message





de
news:
bg2rms$g35$
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur
l'ouverture


de
ton
formulaire d'ouverture ou alors sur une macro Autoexec qui
lancera






ce
code.

Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple
contenant




le code nécessaire à mettre dans un module de ta base de donnée.

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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au niveau
des






information quelle contient par contre l'utilisateur en
faisant







c'est
requête ferra grossir cette base d'une 50 de Mo donc pour
éviter







des
désagrément pour l'utilisateur final je voudrais que ça ne le
fasse





que
de
temps en temps il mais donc impossible de la compacter a
chaque







fermeture.

"Jessy SEMPERE" a écrit dans le
message





de
news:
bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est
qu'un








jour ta base fera tout le temps plus de 100 Mo même
compacter








vu qu'au fil du temps tu vas l'incrémenter avec des données
donc







ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option :
"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor
t'avais






demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:

bonjours

Je voudrait faire un compatage de ma base de donne a la
femeture







de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access
je









voudrais
qu'il
fasse le compactage tous seul




































Avatar
Yann
Alors :
J'ais modifier le code et toujour rien a faire

par contre j'ais remarquer quand je fais ca
DBEngine.CreateDatabase "test.mdb", strDbFile
ca vas plus loin en me disant erreur 3170 pilot ISAM introuvable
quand a celuici j'ais toujour le meme messages erreur de compilation
varaible non definie
DBEngine.CreateDatabase strDbFile, dbLangGeneral

"Jessy SEMPERE" a écrit dans le message de news:
bg7v2h$vgv$
Alors :
Le but est de compacter la base de donnée en cours ???
En fait la fonction à lancer et CompactExe() et non Compact()
Ensuite je n'avais pas encore mis sur mon site la nouvelle version à
télécharger mais pour simplifier, remplaces la fonction CompactExe()
par ce 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
********************************************
Pour le reste garde le code initial et re-essais...

Alors ça marche ???

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#ioU#
j'ais modifier le code mais toujour rien

le code modifier

Option Compare Database
Option Explicit

Function CompactEXE() As Boolean

Dim strDbFile As String
'strDbFile = CurrentDb.Name & ".tmp"
strDbFile = "D:ApplysLBA&tarif.mdb"

With Application.FileSearch
' .LookIn = Left(strDbFile, Len(strDbFile) - (Len(Dir(strDbFile))
+


1))
.LookIn = "D:ApplysLBA&tarif"
.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)
'strDbFile = (Len(strDbPath) - 4)
strDbFile = "D:ApplysLBA&tarif.mdb"
'strDbFileOld = Left(strDbFile, Len(strDbFile) - 4) & ".old"
strDbFileOld = "D:ApplysLBA&tarif.old"

'Set acApp = GetObject(strDbFile)
Set acApp = GetObject("D:ApplysLBA&tarif.mdb")

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



quand j'ecrie compact dans la fenetre d'execution j'ais bien la base qui
ce

ferme affiche Compactage en cours (qu'il ne fait pas)et puis plus rien
Access reste ouver sans base et le messages en bas a gauche "compactae
en


cours".



"Jessy SEMPERE" a écrit dans le message de
news:

bg7q13$set$
Bonjour

euh.... là j'ai un peu de mal...

honnêtement là je ne comprends pas, tu dis que c'est sur la ligne
DBEngine.CreateDatabase strDbFile, dbLangGeneral
que ça plante et que ça te met argument non valide.

Sous access 97 ça marche parfaitement, mais sous XP ???
Je ne peux pas te dire, je n'ai pas XP pour tester mais peut-être
que Raymond pourrait-en dire plus...

Désolé mais là je sèche

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
bonjour Jessy.

Je suis un paut dure je ne comprend pas mettre la taille en double
au




lieu
long pareille par contre variant il s'en fou ! :-)
le s'executer mais il y a un probleme sur le module a la ligne
suivante



,
en
plus je comprendre rien a DBengine :-)

DBEngine.CreateDatabase strDbFile, dbLangGeneral

dbLanGeneral pas de varaible declarer
le code continue , argument non valide erreur 3001

DBEngine.CreateDatabase strDbFile, dbLangGeneral


C'est quoi ?
Merci

"Jessy SEMPERE" a écrit dans le message
de




news:
bg3cje$qbm$
oui je n'avais pas calculé combien d'octet ça représentais...

remplaces la code du formulaire par :

Dim dbl As Double
dbl = FileLen(CurrentDb.Name)
If dbl > (150 * 1024 * 1024) Then CompactEXE

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
et j'ais un message Erreur d'execution 6 depassement de
capaciter





c'est grave docteur
Merci
"Jessy SEMPERE" a écrit dans le
message





de
news:
bg2rms$g35$
Re,



Bon ce que tu peux faire c'est de mettre le code qui suit sur
l'ouverture


de
ton
formulaire d'ouverture ou alors sur une macro Autoexec qui
lancera






ce
code.

Dim lng As Long
lng = FileLen(CurrentDb.Name)
If lng > (150 * 1024 * 1024) Then CompactEXE

Ensuite vas à l'adresse qui suit pour télécharger un exemple
contenant




le code nécessaire à mettre dans un module de ta base de
donnée.








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

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message news:
#
Rê Bonjour,

MA base et + ou - fixe elle ne variera pas beaucoup au
niveau








des
information quelle contient par contre l'utilisateur en
faisant







c'est
requête ferra grossir cette base d'une 50 de Mo donc pour
éviter







des
désagrément pour l'utilisateur final je voudrais que ça ne
le








fasse
que
de
temps en temps il mais donc impossible de la compacter a
chaque







fermeture.

"Jessy SEMPERE" a écrit dans le
message





de
news:
bg2pno$f0v$
Bonjour

Le problème de gérer le compactage de cette manière est
qu'un








jour ta base fera tout le temps plus de 100 Mo même
compacter








vu qu'au fil du temps tu vas l'incrémenter avec des
données









donc
ce sera normale qu'elle grossisse...

Vu que tu possèdes Access XP, tu n'as qu'à cocher l'option
:









"Compacter lors de la fermeture de la base", ça ne pourra
que être bénéfique.

PS : Reste dans le même fil que tu avais lancé et où Anor
t'avais






demander de nous donner plus de précisions... ;-)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Yann" a écrit dans le message
news:










bonjours

Je voudrait faire un compatage de ma base de donne a la
femeture







de
l'application et en fonction de sa taille

J'ais AccessXP ma base fait 100 Mo

donc si la base depasse les 150Mo a la femeture d'Access
je









voudrais
qu'il
fasse le compactage tous seul








































1 2 3