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

1 réponse

1 2
Avatar
Guy FALESSE
Salut Eric,

Quand je disais que la base de données n'était pas ouverte, c'était dans le
programme VB6 mais dans Acess, la base est ouverte.
Bon, j'ai appliqué la fonction de Pierre comme tu me l'as indiqué, bingo,
plus d'erreur et la base est compactée.
Merci beaucoup à toi et à Pierre pour sa fonction bien entendu :-)
@+

Guy FALESSE

"Eric" a écrit dans le message de news:
%
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