OVH Cloud OVH Cloud

Sub de compactage BD

11 réponses
Avatar
Guy FALESSE
Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de données, mais qui
me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "\ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE

10 réponses

1 2
Avatar
Eric
Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.

Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de données, mais qui
me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Guy FALESSE
Salut Eric,
Merci pour ta réponse :-)
Maintenant, j'ai un autre message qui dit:
Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
l'utilisateur 'Adm' sur la machine 'GuyP4'.
Recommencez lorsque la BD sera disponible.
Ça doit être ça, rien à faire, on ne peut pas compacter une base déjà
ouverte avec Office Xp, on peut le faire, je crois, avec Office 2003.

"Eric" a écrit dans le message de news:
OHsLlz%
Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.

Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de données, mais
qui me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
re,

N'ayant qu'A2K, il m'est difficile d'aller plus en avant. D'autres
prendront certainement le relais.
Par contre, ce qui m'interroge c'est que sous VB6, tu aies pu compacter
la bd alors qu'elle était ouverte !

Salut Eric,
Merci pour ta réponse :-)
Maintenant, j'ai un autre message qui dit:
Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
l'utilisateur 'Adm' sur la machine 'GuyP4'.
Recommencez lorsque la BD sera disponible.
Ça doit être ça, rien à faire, on ne peut pas compacter une base déjà
ouverte avec Office Xp, on peut le faire, je crois, avec Office 2003.

"Eric" a écrit dans le message de news:
OHsLlz%

Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.


Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de données, mais
qui me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Tisane
Bonjour Eric et Guy,

N'ayant qu'A2K, il m'est difficile d'aller plus en avant. D'autres
prendront certainement le relais.
Par contre, ce qui m'interroge c'est que sous VB6, tu aies pu
compacter la bd alors qu'elle était ouverte !


Je ne peux pas répondre au problème VB, mais je confirme que, manuellement,
on peut compacter une base ouverte depuis la version 2000.
Elle ne doit pas être ouverte sur d'autres postes. Uniquement sur celui qui
compacte.
Si ça ne le fait pas, il faudrait peut-être quitter la base et vérifier si
le fichier log (.ldb) est bien effacé après fermeture.

--
Tisane



Salut Eric,
Merci pour ta réponse :-)
Maintenant, j'ai un autre message qui dit:
Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
l'utilisateur 'Adm' sur la machine 'GuyP4'.
Recommencez lorsque la BD sera disponible.
Ça doit être ça, rien à faire, on ne peut pas compacter une base déjà
ouverte avec Office Xp, on peut le faire, je crois, avec Office 2003.

"Eric" a écrit dans le message de news:
OHsLlz%

Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.


Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de
données, mais qui me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE








Avatar
3stone
Salut,

"Guy FALESSE"
| Maintenant, j'ai un autre message qui dit:
| Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
| l'utilisateur 'Adm' sur la machine 'GuyP4'.
| Recommencez lorsque la BD sera disponible.


Pour tester si tu peux ouvrir la base distante en mode exclusif
(obligatoirement pour le compactage) tu peux utiliser ceci :
http://www.3stone.be/access/articles.php?lng=fr&pgi


et



| >> DBEngine.CompactDatabase BDname, BDname + "X"
| >> Kill BDname
| >> Name BDname + "X" As BDname


tu ne fais pas des calculs !!!

Le signe de concaténation est le signe &


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
3stone
Bonjour Tisane,

"Tisane"
[...]
| Je ne peux pas répondre au problème VB, mais je confirme que, manuellement,
| on peut compacter une base ouverte depuis la version 2000.
| Elle ne doit pas être ouverte sur d'autres postes. Uniquement sur celui qui
| compacte.


Disons que MS utilise un subterfuge...

Lorsque l'on compacte une base "manuellement", la base est d'abord
fermée, puis compacter et réouverte.
Pour vérifier, il suffit d'observer la "fenêtre base de données".
Ce qui donne l'impression que l'on compacte une base "ouverte" ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Guy FALESSE
Salut Eric,

En fait, la base de données n'est pas ouverte, j'aurais dû le signaler, mea
culpa
@+

Guy FALESSE


"Eric" a écrit dans le message de news:

re,

N'ayant qu'A2K, il m'est difficile d'aller plus en avant. D'autres
prendront certainement le relais.
Par contre, ce qui m'interroge c'est que sous VB6, tu aies pu compacter la
bd alors qu'elle était ouverte !

Salut Eric,
Merci pour ta réponse :-)
Maintenant, j'ai un autre message qui dit:
Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
l'utilisateur 'Adm' sur la machine 'GuyP4'.
Recommencez lorsque la BD sera disponible.
Ça doit être ça, rien à faire, on ne peut pas compacter une base déjà
ouverte avec Office Xp, on peut le faire, je crois, avec Office 2003.

"Eric" a écrit dans le message de news:
OHsLlz%

Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.


Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de données, mais
qui me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Guy FALESSE
Salut Tisane,

Merci pour ta réponse,

le fichier log est bien effacé.
@+

Guy FALESSE


"Tisane" a écrit dans le message de news:
%
Bonjour Eric et Guy,

N'ayant qu'A2K, il m'est difficile d'aller plus en avant. D'autres
prendront certainement le relais.
Par contre, ce qui m'interroge c'est que sous VB6, tu aies pu
compacter la bd alors qu'elle était ouverte !


Je ne peux pas répondre au problème VB, mais je confirme que,
manuellement, on peut compacter une base ouverte depuis la version 2000.
Elle ne doit pas être ouverte sur d'autres postes. Uniquement sur celui
qui compacte.
Si ça ne le fait pas, il faudrait peut-être quitter la base et vérifier
si le fichier log (.ldb) est bien effacé après fermeture.

--
Tisane



Salut Eric,
Merci pour ta réponse :-)
Maintenant, j'ai un autre message qui dit:
Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
l'utilisateur 'Adm' sur la machine 'GuyP4'.
Recommencez lorsque la BD sera disponible.
Ça doit être ça, rien à faire, on ne peut pas compacter une base déjà
ouverte avec Office Xp, on peut le faire, je crois, avec Office 2003.

"Eric" a écrit dans le message de news:
OHsLlz%

Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.


Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de
données, mais qui me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE











Avatar
Guy FALESSE
Salut Pierre,

Merci pour ta réponse.
La fonction, je l'ai recopié telle quelle de "mon" module VB.
Mais comme je le disais dans la réponse à Eric, cette fonction travaille sur
une base fermée, je l'avais oublié :-(
Je n'ai pas compris comment faire exécuter ta fonction, désolé. :-(
Mais tout ça n'est pas bien grave :-) C'était juste pour savoir si tout ça
était possible.

@+

Guy FALESSE


"3stone" a écrit dans le message de news:

Salut,

"Guy FALESSE"
| Maintenant, j'ai un autre message qui dit:
| Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
| l'utilisateur 'Adm' sur la machine 'GuyP4'.
| Recommencez lorsque la BD sera disponible.


Pour tester si tu peux ouvrir la base distante en mode exclusif
(obligatoirement pour le compactage) tu peux utiliser ceci :
http://www.3stone.be/access/articles.php?lng=fr&pgi


et



| >> DBEngine.CompactDatabase BDname, BDname + "X"
| >> Kill BDname
| >> Name BDname + "X" As BDname


tu ne fais pas des calculs !!!

Le signe de concaténation est le signe &


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/



Avatar
Eric
Bonjour Guy,

Si la bd n'est pas ouverte, je ne vois pas pourquoi tu as ce genre d'erreur.
La méthode CompactDatabase s'applique aux bds à l'exception de la bd
active. Les bds faisant l'object de CompactDatabase doivent pouvoir être
ouvertes exclusivement par Jet ce qui implique que les bds à compacter
ne doivent pas déjà être ouvertes par un utilisateur quelconque.

J'ai essayé ta sub sur une bd fermée et je n'ai pas ton message d'erreur
(Access2000).

Question subsidiaire : La bd à compacter ne serait-elle pas une back-end
(dorsale) qui serait en exploitation par une frontale ? Dans ce cas,
la fonction de Pierre, copiée dans un module et appelée en début de ta
procédure permettrait de savoir en fonction de la valeur retournée si
l'on peut compacter cette bd.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
If fnCanOpenExclusive(BDName) then
' le traitement
Else
' message
End if
...
End Sub

Salut Eric,

En fait, la base de données n'est pas ouverte, j'aurais dû le signaler, mea
culpa
@+

Guy FALESSE


"Eric" a écrit dans le message de news:


re,

N'ayant qu'A2K, il m'est difficile d'aller plus en avant. D'autres
prendront certainement le relais.
Par contre, ce qui m'interroge c'est que sous VB6, tu aies pu compacter la
bd alors qu'elle était ouverte !


Salut Eric,
Merci pour ta réponse :-)
Maintenant, j'ai un autre message qui dit:
Vous avez essayé d'ouvrir une BD déjà ouverte en mode exclusif par
l'utilisateur 'Adm' sur la machine 'GuyP4'.
Recommencez lorsque la BD sera disponible.
Ça doit être ça, rien à faire, on ne peut pas compacter une base déjà
ouverte avec Office Xp, on peut le faire, je crois, avec Office 2003.

"Eric" a écrit dans le message de news:
OHsLlz%


Bonjour Guy,

Je pense que l'erreur se situe sur la ligne
BDname = App.Path & "ListePrix01.mdb"

Il faudrait remplacer App par CurrentProject.



Bonjour à tous,

J'ai ce petit programme qui devrait à compacter la base de données, mais
qui me dit "objet requis"
Ce petit sub fonctionne bien en VB6.
Comment pourrai-je éviter ce problème.
J'utilise Access Xp.

Private Sub Commande20_Click()
Dim BDname As String
On Error GoTo Erreur
BDname = App.Path & "ListePrix01.mdb"
DBEngine.CompactDatabase BDname, BDname + "X"
Kill BDname
Name BDname + "X" As BDname
MsgBox "Compactage de la base avec succés ", vbDefaultButton1 +
vbInformation, "COMPACTAGE DE LA BASE"
Exit Sub
Erreur:
MsgBox Err.Description, vbCritical, "Erreur lors du compactage"
End Sub

D'avance merci,

Guy FALESSE


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





1 2