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
Bon fait juste cette fonction :

Function Test()
Dbengine.createdatabase "c:test.mdb", dbLangGeneral
end function

Ensuite va voir sur c: si la base test.mdb a été créée.
Donc ???
--
@+
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:
#
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












































Avatar
Yann
Toujour boue je desespere

Erreur d'execution 3001
argument non valide

"Jessy SEMPERE" a écrit dans le message de news:
bg80gr$hm$
Bon fait juste cette fonction :

Function Test()
Dbengine.createdatabase "c:test.mdb", dbLangGeneral
end function

Ensuite va voir sur c: si la base test.mdb a été créée.
Donc ???
--
@+
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:
#
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
















































Avatar
Yann
tu veu dire dans l'aide d'Access ?

si oui

j'ais
Set database = workspace.CreateDatabase (name, locale, options)

La syntaxe de la méthode CreateDatabase comprend les éléments suivants :

Élément Description
database Variable objet représentant l'objet Database à créer.
workspace Variable objet représentant l'objet Workspace existant qui
va contenir la base de données. Si vous omettez workspace, la méthode
CreateDatabase utilise l'objet Workspace par défaut.
name Donnée de type String d'une longueur maximale de 255 caractères,
indiquant le nom du fichier de base de données à créer. Cet argument peut
préciser le chemin et le nom de fichier complets, comme "C:db1.mdb". Si
vous ne précisez aucune extension, .mdb est automatiquement ajouté. Vous
pouvez également indiquer un chemin d'accès réseau, si votre réseau le
permet, par exemple, "server1share1dir1db1". Cette méthode ne permet de
créer que des fichiers .mdb.
locale Expression de chaîne indiquant l'ordre de tri utilisé lors de
la création d'une base de données, comme indiqué dans Valeurs. Si vous
omettez cet argument, une erreur se produit.
Vous pouvez définir le mot de passe du nouvel objet Database en
concaténant la chaîne de mot de passe (commençant par ";pwd=") avec une
constante dans l'argument locale, comme dans l'exemple suivant :
dbLangSpanish & ";pwd=NewPassword"
Pour utiliser les paramètres régionaux par défaut, tout en
définissant un mot de passe, entrez seulement une chaîne de mot de passe en
argument locale, comme dans l'exemple suivant :
";pwd=NewPassword"
options Facultatif. Constante ou combinaison de constantes indiquant
une ou plusieurs options, comme indiqué dans Valeurs. Pour combiner des
options, additionnez les valeurs qui leur sont associées.



"Jessy SEMPERE" a écrit dans le message de news:
bg80u9$lq$
Quand tu vas voir dans l'aide sur la fonction "CreateDatabase"
quels sont les arguments qu'on te propose ???

--
@+
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:
#
Toujour boue je desespere

Erreur d'execution 3001
argument non valide

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

bg80gr$hm$
Bon fait juste cette fonction :

Function Test()
Dbengine.createdatabase "c:test.mdb", dbLangGeneral
end function

Ensuite va voir sur c: si la base test.mdb a été créée.
Donc ???
--
@+
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:
#
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














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 mais après il te propose des constantes possible pour l'argument
local.
Donc est ce qu'Access te propose "dbLangGeneral" ???

@+
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:

tu veu dire dans l'aide d'Access ?

si oui

j'ais
Set database = workspace.CreateDatabase (name, locale, options)

La syntaxe de la méthode CreateDatabase comprend les éléments suivants :

Élément Description
database Variable objet représentant l'objet Database à créer.
workspace Variable objet représentant l'objet Workspace existant qui
va contenir la base de données. Si vous omettez workspace, la méthode
CreateDatabase utilise l'objet Workspace par défaut.
name Donnée de type String d'une longueur maximale de 255
caractères,

indiquant le nom du fichier de base de données à créer. Cet argument peut
préciser le chemin et le nom de fichier complets, comme "C:db1.mdb". Si
vous ne précisez aucune extension, .mdb est automatiquement ajouté. Vous
pouvez également indiquer un chemin d'accès réseau, si votre réseau le
permet, par exemple, "server1share1dir1db1". Cette méthode ne permet
de

créer que des fichiers .mdb.
locale Expression de chaîne indiquant l'ordre de tri utilisé lors de
la création d'une base de données, comme indiqué dans Valeurs. Si vous
omettez cet argument, une erreur se produit.
Vous pouvez définir le mot de passe du nouvel objet Database en
concaténant la chaîne de mot de passe (commençant par ";pwd=") avec une
constante dans l'argument locale, comme dans l'exemple suivant :
dbLangSpanish & ";pwd=NewPassword"
Pour utiliser les paramètres régionaux par défaut, tout en
définissant un mot de passe, entrez seulement une chaîne de mot de passe
en

argument locale, comme dans l'exemple suivant :
";pwd=NewPassword"
options Facultatif. Constante ou combinaison de constantes indiquant
une ou plusieurs options, comme indiqué dans Valeurs. Pour combiner des
options, additionnez les valeurs qui leur sont associées.



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

bg80u9$lq$
Quand tu vas voir dans l'aide sur la fonction "CreateDatabase"
quels sont les arguments qu'on te propose ???

--
@+
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:
#
Toujour boue je desespere

Erreur d'execution 3001
argument non valide

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

bg80gr$hm$
Bon fait juste cette fonction :

Function Test()
Dbengine.createdatabase "c:test.mdb", dbLangGeneral
end function

Ensuite va voir sur c: si la base test.mdb a été créée.
Donc ???
--
@+
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:
#
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















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
Oui
j'ais
Valeurs
Vous pouvez utiliser l'une des constantes suivantes dans l'argument locale
pour définir la propriété CollatingOrder pertinente pour les comparaisons de
chaînes.

Constante Ordre de tri
dbLangGeneral Anglais, allemand, français, portugais, italien et
espagnol moderne
dbLangArabic Arabe
dbLangChineseSimplified Chinois simplifié
dbLangChineseTraditional Chinois traditionnel
dbLangCyrillic Russe
dbLangCzech Tchèque
dbLangDutch Néerlandais
dbLangGreek Grec
dbLangHebrew Hébreux
dbLangHungarian Hongrois
dbLangIcelandic Islandais
dbLangJapanese Japonais
dbLangKorean Coréen
dbLangNordic Langues nordiques (moteur de base de données Microsoft
Jet version 1.0 uniquement)
dbLangNorwDan Norvégien et danois
dbLangPolish Polonais
dbLangSlovenian Slovène
dbLangSpanish Espagnol traditionnel
dbLangSwedFin Suédois et finnois
dbLangThai Thaï
dbLangTurkish Turc



Vous pouvez utiliser une ou plusieurs des constantes ci-dessous en argument
options pour définir la version du format de données et activer le cas
échéant le codage de la base de données.

Constante Description
dbEncrypt Crée une base de données codée.
dbVersion10 Crée une base de données utilisant le format de fichier
1.0 du moteur de base de données Microsoft Jet.
dbVersion11 Crée une base de données utilisant le format de fichier
1.1 du moteur de base de données Microsoft Jet.
dbVersion20 Crée une base de données utilisant le format de fichier
2.0 du moteur de base de données Microsoft Jet.
dbVersion30 (Valeur par défaut) Crée une base de données utilisant le
format de fichier 3.0 du moteur de base de données Microsoft Jet (compatible
avec la version 3.5).



Si vous omettez la constante de codage, la méthode CreateDatabase crée une
base de données non codée. Vous ne pouvez indiquer qu'une seule constante de
version. Si vous omettez cette constante, la méthode CreateDatabase crée une
base de données utilisant le format de fichier 3.0 du moteur de base de
données Microsoft Jet.


"Jessy SEMPERE" a écrit dans le message de news:
bg81cc$vv$
Oui mais après il te propose des constantes possible pour l'argument
local.
Donc est ce qu'Access te propose "dbLangGeneral" ???

@+
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:

tu veu dire dans l'aide d'Access ?

si oui

j'ais
Set database = workspace.CreateDatabase (name, locale, options)

La syntaxe de la méthode CreateDatabase comprend les éléments suivants :

Élément Description
database Variable objet représentant l'objet Database à créer.
workspace Variable objet représentant l'objet Workspace existant
qui


va contenir la base de données. Si vous omettez workspace, la méthode
CreateDatabase utilise l'objet Workspace par défaut.
name Donnée de type String d'une longueur maximale de 255
caractères,

indiquant le nom du fichier de base de données à créer. Cet argument
peut


préciser le chemin et le nom de fichier complets, comme "C:db1.mdb". Si
vous ne précisez aucune extension, .mdb est automatiquement ajouté. Vous
pouvez également indiquer un chemin d'accès réseau, si votre réseau le
permet, par exemple, "server1share1dir1db1". Cette méthode ne
permet


de
créer que des fichiers .mdb.
locale Expression de chaîne indiquant l'ordre de tri utilisé lors
de


la création d'une base de données, comme indiqué dans Valeurs. Si vous
omettez cet argument, une erreur se produit.
Vous pouvez définir le mot de passe du nouvel objet Database en
concaténant la chaîne de mot de passe (commençant par ";pwd=") avec une
constante dans l'argument locale, comme dans l'exemple suivant :
dbLangSpanish & ";pwd=NewPassword"
Pour utiliser les paramètres régionaux par défaut, tout en
définissant un mot de passe, entrez seulement une chaîne de mot de passe
en

argument locale, comme dans l'exemple suivant :
";pwd=NewPassword"
options Facultatif. Constante ou combinaison de constantes
indiquant


une ou plusieurs options, comme indiqué dans Valeurs. Pour combiner des
options, additionnez les valeurs qui leur sont associées.



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

bg80u9$lq$
Quand tu vas voir dans l'aide sur la fonction "CreateDatabase"
quels sont les arguments qu'on te propose ???

--
@+
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:
#
Toujour boue je desespere

Erreur d'execution 3001
argument non valide

"Jessy SEMPERE" a écrit dans le message
de




news:
bg80gr$hm$
Bon fait juste cette fonction :

Function Test()
Dbengine.createdatabase "c:test.mdb", dbLangGeneral
end function

Ensuite va voir sur c: si la base test.mdb a été créée.
Donc ???
--
@+
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:
#
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















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
autant pour moi j'ais fait une erreur sur l'ecriture de dbengine

ca marche bien avec les reference encore mille merci pour ta patience.

yann


"Jessy SEMPERE" a écrit dans le message de news:
bg81nt$1ba$
J'oubliais, DbEngine et une méthode DAO...
Donc rajoutes la référence "Microsoft DAO 3.xx Object Library"

@+
Jessy Sempere - Access MVP

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

RE.

DBEngine.CreateDatabase "c:test.mdb", dbLangGeneral

le problème n'est pas là, car cette syntaxe est bonne et fonctionne sur
2000

et +

faut chercher ailleurs.

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


"Yann" a écrit dans le message de
news:
tu veu dire dans l'aide d'Access ?

si oui

j'ais
Set database = workspace.CreateDatabase (name, locale, options)

La syntaxe de la méthode CreateDatabase comprend les éléments suivants
:




Élément Description
database Variable objet représentant l'objet Database à créer.
workspace Variable objet représentant l'objet Workspace existant
qui


va contenir la base de données. Si vous omettez workspace, la méthode
CreateDatabase utilise l'objet Workspace par défaut.
name Donnée de type String d'une longueur maximale de 255
caractères,

indiquant le nom du fichier de base de données à créer. Cet argument
peut


préciser le chemin et le nom de fichier complets, comme "C:db1.mdb".
Si



vous ne précisez aucune extension, .mdb est automatiquement ajouté.
Vous



pouvez également indiquer un chemin d'accès réseau, si votre réseau le
permet, par exemple, "server1share1dir1db1". Cette méthode ne
permet


de
créer que des fichiers .mdb.
locale Expression de chaîne indiquant l'ordre de tri utilisé
lors



de
la création d'une base de données, comme indiqué dans Valeurs. Si vous
omettez cet argument, une erreur se produit.
Vous pouvez définir le mot de passe du nouvel objet Database
en



concaténant la chaîne de mot de passe (commençant par ";pwd=") avec
une



constante dans l'argument locale, comme dans l'exemple suivant :
dbLangSpanish & ";pwd=NewPassword"
Pour utiliser les paramètres régionaux par défaut, tout en
définissant un mot de passe, entrez seulement une chaîne de mot de
passe



en
argument locale, comme dans l'exemple suivant :
";pwd=NewPassword"
options Facultatif. Constante ou combinaison de constantes
indiquant


une ou plusieurs options, comme indiqué dans Valeurs. Pour combiner
des



options, additionnez les valeurs qui leur sont associées.










Avatar
Jessy SEMPERE
Et bien c'est cool, je suis ravi que ça fonctionne enfin
Ce fut long mais bon tout s'arrange... ;-))))

@+
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:

autant pour moi j'ais fait une erreur sur l'ecriture de dbengine

ca marche bien avec les reference encore mille merci pour ta patience.

yann


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

bg81nt$1ba$
J'oubliais, DbEngine et une méthode DAO...
Donc rajoutes la référence "Microsoft DAO 3.xx Object Library"

@+
Jessy Sempere - Access MVP

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

RE.

DBEngine.CreateDatabase "c:test.mdb", dbLangGeneral

le problème n'est pas là, car cette syntaxe est bonne et fonctionne
sur



2000
et +

faut chercher ailleurs.

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


"Yann" a écrit dans le message de
news:
tu veu dire dans l'aide d'Access ?

si oui

j'ais
Set database = workspace.CreateDatabase (name, locale, options)

La syntaxe de la méthode CreateDatabase comprend les éléments
suivants




:

Élément Description
database Variable objet représentant l'objet Database à créer.
workspace Variable objet représentant l'objet Workspace
existant




qui
va contenir la base de données. Si vous omettez workspace, la
méthode




CreateDatabase utilise l'objet Workspace par défaut.
name Donnée de type String d'une longueur maximale de 255
caractères,

indiquant le nom du fichier de base de données à créer. Cet argument
peut


préciser le chemin et le nom de fichier complets, comme
"C:db1.mdb".




Si
vous ne précisez aucune extension, .mdb est automatiquement ajouté.
Vous



pouvez également indiquer un chemin d'accès réseau, si votre réseau
le




permet, par exemple, "server1share1dir1db1". Cette méthode ne
permet


de
créer que des fichiers .mdb.
locale Expression de chaîne indiquant l'ordre de tri utilisé
lors



de
la création d'une base de données, comme indiqué dans Valeurs. Si
vous




omettez cet argument, une erreur se produit.
Vous pouvez définir le mot de passe du nouvel objet Database
en



concaténant la chaîne de mot de passe (commençant par ";pwd=") avec
une



constante dans l'argument locale, comme dans l'exemple suivant :
dbLangSpanish & ";pwd=NewPassword"
Pour utiliser les paramètres régionaux par défaut, tout en
définissant un mot de passe, entrez seulement une chaîne de mot de
passe



en
argument locale, comme dans l'exemple suivant :
";pwd=NewPassword"
options Facultatif. Constante ou combinaison de constantes
indiquant


une ou plusieurs options, comme indiqué dans Valeurs. Pour combiner
des



options, additionnez les valeurs qui leur sont associées.














Avatar
Yann
RE j'ais plusieure test

et maitenant il s'aver que le compactage tourne en boucle pourquoi

poutant sur l'ouverture de la form de demarage j'ais bien

Dim dbl As Long
On Error Resume Next
'pour le compactage
dbl = FileLen(CurrentDb.Name)
If dbl > (150 * 1024 * 1024) Then CompactEXE




"Jessy SEMPERE" a écrit dans le message de news:
bg82ub$269$
Et bien c'est cool, je suis ravi que ça fonctionne enfin
Ce fut long mais bon tout s'arrange... ;-))))

@+
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:

autant pour moi j'ais fait une erreur sur l'ecriture de dbengine

ca marche bien avec les reference encore mille merci pour ta patience.

yann


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

bg81nt$1ba$
J'oubliais, DbEngine et une méthode DAO...
Donc rajoutes la référence "Microsoft DAO 3.xx Object Library"

@+
Jessy Sempere - Access MVP

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

RE.

DBEngine.CreateDatabase "c:test.mdb", dbLangGeneral

le problème n'est pas là, car cette syntaxe est bonne et fonctionne
sur



2000
et +

faut chercher ailleurs.

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


"Yann" a écrit dans le message de
news:
tu veu dire dans l'aide d'Access ?

si oui

j'ais
Set database = workspace.CreateDatabase (name, locale, options)

La syntaxe de la méthode CreateDatabase comprend les éléments
suivants




:

Élément Description
database Variable objet représentant l'objet Database à
créer.





workspace Variable objet représentant l'objet Workspace
existant




qui
va contenir la base de données. Si vous omettez workspace, la
méthode




CreateDatabase utilise l'objet Workspace par défaut.
name Donnée de type String d'une longueur maximale de 255
caractères,

indiquant le nom du fichier de base de données à créer. Cet
argument





peut
préciser le chemin et le nom de fichier complets, comme
"C:db1.mdb".




Si
vous ne précisez aucune extension, .mdb est automatiquement
ajouté.





Vous
pouvez également indiquer un chemin d'accès réseau, si votre
réseau





le
permet, par exemple, "server1share1dir1db1". Cette méthode ne
permet


de
créer que des fichiers .mdb.
locale Expression de chaîne indiquant l'ordre de tri utilisé
lors



de
la création d'une base de données, comme indiqué dans Valeurs. Si
vous




omettez cet argument, une erreur se produit.
Vous pouvez définir le mot de passe du nouvel objet
Database





en
concaténant la chaîne de mot de passe (commençant par ";pwd=")
avec





une
constante dans l'argument locale, comme dans l'exemple suivant :
dbLangSpanish & ";pwd=NewPassword"
Pour utiliser les paramètres régionaux par défaut, tout en
définissant un mot de passe, entrez seulement une chaîne de mot de
passe



en
argument locale, comme dans l'exemple suivant :
";pwd=NewPassword"
options Facultatif. Constante ou combinaison de constantes
indiquant


une ou plusieurs options, comme indiqué dans Valeurs. Pour
combiner





des
options, additionnez les valeurs qui leur sont associées.


















Avatar
Jessy SEMPERE
et oui c'est normal, lors du compactage il ferme puis il re-ouvre
ta base donc forcément il relance l'ouverture du formulaire de
démarrage.
par contre s'il recompacte c'est que ta base même après compactage
fait plus de 150 MO...

Sinon pour éviter ce formulaire de démarrage voici une variante du code
avec du coup une fonction complémentaire

Mets tout ce qui suit dans le module "modCompactCurrentDb"
(remplaces "frmOuverture" par le nom de ton formulaire de démarrage)
***************************************************
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

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
ModifiePropr strDbFile, "StartupForm", dbText, "(aucune)"
.OpenCurrentDatabase strDbFile
ModifiePropr strDbFile, "StartupForm", dbText, "frmOuverture"
.SysCmd acSysCmdClearStatus
End With
Application.Quit
End Function

Function ModifiePropr(strDb As String, chNomPropriété As String, _
varTypeProp As Variant, varValeurProp As Variant) As Integer

Dim bds As Database, prp As Property
Const conErreurPropNonTrouvée = 3270

Set bds = DBEngine.OpenDatabase(strDb)
On Error GoTo Change_Err
bds.Properties(chNomPropriété) = varValeurProp
ModifiePropr = True

Change_Sortie:
Exit Function

Change_Err:
If Err = conErreurPropNonTrouvée Then ' Propriété non trouvée.
Set prp = bds.CreateProperty(chNomPropriété, _
varTypeProp, varValeurProp)
bds.Properties.Append prp
Resume Next
Else
' Erreur inconnue.
ModifiePropr = False
Resume Change_Sortie
End If
End Function
***************************************************

@+
Jessy Sempere - Access MVP

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

| Et comme ont dit plus c'est long plus c'est bon :-)
|
| Merci
|

ça dépend de quel point de vue on se place.

en l"espace de 9 messages, vous êtes passés de posts de 9ko à des posts de plus de 20 ko!!

La prochaine fois, pensez SVP à supprimer de vos messages les anciennes parties inutiles,
ça évitera de boucher le tuyau de ceux qui consultent les news par modem classique.

Cordialement,
--
Arnaud
----------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - Les tablettes d'Anor
www.anor.fr.st
----------------------------------------------
1 2 3