CurrentDB et verrouillage de base
Le
Xavier HUE
Bonjour,
Win 200Pro SP4, Access XP SP3.
Voilà plusieurs jours que je tourne en rond, malgré de nombreuses recherches
sur ce forum, chez microsoft et sur le net en général.
Mon interrogation: Comment utiliser (faire référence à) la base de données
en cours en VBA?
En effet, je constate un verrouillage systématique lorsque je:
- Ouvre ma base
- Ouvre un formulaire en modification
- Par la suite, l'exécution de code passant sur CurrenDb.Name ou si je
tape la ligne dans la fenêtre d'exécution de VBA: ? CurrentDb.Name
=> En réponse, j'ai le message "Erreur d'exécution '3734' La base de données
a été placé par l'utilisateur "Admin""
Impossible dans ce cas d'enregistrer mes modifs si j'en fais.
Ou bien
- Ouvre ma base
- Tape la ligne dans la fenêtre d'exécution de VBA: ? CurrentDb.Name, ou
exécute Set MaBase = CurrentDb
- Ouvre un formulaire en création
=> En réponse, le message d'erreur "Vous n'avez pas les autorisations
nécessaire"
Je compacte ma base, et le problème disparait parfois!
J'ai ce problème dans une base en cours de développement.
J'ai beau quitter Access et relancer, compacter ma base, rien n'y fait!
La cerise sur le gateau, ayant passé la matinée sur ça, afin de rédiger ce
message, j'ai fait l'essai dans une base neuve:
- Création d'une base vide
- Mise en place des références:
+ Visual Basic pour application
+ Microsoft Access 10.0 objetct library
+ Microsoft DAO 3.6 objetct library
- Création d'un formulaire
- Ajout du code suivant
Option Compare Database
Option Explicit
Dim gDb As DAO.database
Private Sub Form_Load()
Set gDb = Application.CurrentDb
End Sub
Private Sub Form_Unload(Cancel As Integer)
gDb.Close
Set gDb = Nothing
End Sub
- Enregistre et ferme le formulaire
- Ouvre le formulaire en design, et paf! le message d'erreur 3734.
Ensuite
- Quitte Access
- Relance Access
- Charge ma base test
- Compacte ma base
- Ouvre le formulaire en design
C'est bon!!??!!
Je charge ma base en développement, et plus d'erreur????
Qu'est-ce qui se passe??
Ou est mon erreur??
Merci.
Win 200Pro SP4, Access XP SP3.
Voilà plusieurs jours que je tourne en rond, malgré de nombreuses recherches
sur ce forum, chez microsoft et sur le net en général.
Mon interrogation: Comment utiliser (faire référence à) la base de données
en cours en VBA?
En effet, je constate un verrouillage systématique lorsque je:
- Ouvre ma base
- Ouvre un formulaire en modification
- Par la suite, l'exécution de code passant sur CurrenDb.Name ou si je
tape la ligne dans la fenêtre d'exécution de VBA: ? CurrentDb.Name
=> En réponse, j'ai le message "Erreur d'exécution '3734' La base de données
a été placé par l'utilisateur "Admin""
Impossible dans ce cas d'enregistrer mes modifs si j'en fais.
Ou bien
- Ouvre ma base
- Tape la ligne dans la fenêtre d'exécution de VBA: ? CurrentDb.Name, ou
exécute Set MaBase = CurrentDb
- Ouvre un formulaire en création
=> En réponse, le message d'erreur "Vous n'avez pas les autorisations
nécessaire"
Je compacte ma base, et le problème disparait parfois!
J'ai ce problème dans une base en cours de développement.
J'ai beau quitter Access et relancer, compacter ma base, rien n'y fait!
La cerise sur le gateau, ayant passé la matinée sur ça, afin de rédiger ce
message, j'ai fait l'essai dans une base neuve:
- Création d'une base vide
- Mise en place des références:
+ Visual Basic pour application
+ Microsoft Access 10.0 objetct library
+ Microsoft DAO 3.6 objetct library
- Création d'un formulaire
- Ajout du code suivant
Option Compare Database
Option Explicit
Dim gDb As DAO.database
Private Sub Form_Load()
Set gDb = Application.CurrentDb
End Sub
Private Sub Form_Unload(Cancel As Integer)
gDb.Close
Set gDb = Nothing
End Sub
- Enregistre et ferme le formulaire
- Ouvre le formulaire en design, et paf! le message d'erreur 3734.
Ensuite
- Quitte Access
- Relance Access
- Charge ma base test
- Compacte ma base
- Ouvre le formulaire en design
C'est bon!!??!!
Je charge ma base en développement, et plus d'erreur????
Qu'est-ce qui se passe??
Ou est mon erreur??
Merci.

Poser une question


fait!!!
Juste après l'envoi de mon message!!
Y'a un Gremlin quelque part :-(
Bonjour,
Tu as une fiche technique à ce sujet :
http://support.microsoft.com/defaul...-US;274211
Essaie sinon d'utiliser plutôt CurrentDb dans ton code qui ne t'oblige pas à
faire des déclarations et des set.
Arnaud
--
Charte du forum : http://www.mpfa.info/
Recherche dans les archives :
http://groups.google.fr/group/micro...cess?hl=fr
1) J'ai déjà consulté cet article. Il ne répond pas à mon problème. Je ne
fais pas d'ouvertures multiples. Comme expliqué dans mon msg, le simple fait
d'appeler la méthode CurrentDB plante l'exécution, ou verrouille la base, qui
ne contient qu'un formulaire et les quelques lignes de code.
2) J'ai lu quelque part chez microsoft qu'il était préférable de passer par
Set bdg = CurrentDb, par exemple pour ensuite faire un set Tbl =
bdg.Tabledefs... D'ailleurs au début je ne faisais pas de Set. Et avec ou
sans le problème est toujours.
Merci quand même pour ta réponse.
Je reste en attente d'autres pistes, si quelqu'un a une idée.
Xav.
Ta base est peut être corrompue alors.
Ca expliquerait que ça le fasse de facon aléatoire, qu'un compactage résolve
le souci pour un moment et que ca revienne.
Crée toi une nouvelle base et importes-y tous tes objets. Si le problème
finit par réapparaître, c'est qu'il y a quelque chose qui corrompt ta base.
Fermes tu bien tous tes objets par un set nothing ?
Sinon une liste (en anglais) de causes de corruption :
http://minilien.com/?rR70815eOY
Arnaud
--
Charte du forum : http://www.mpfa.info/
Recherche dans les archives :
http://groups.google.fr/group/micro...cess?hl=fr
Beaucoup de chose à lire et vérifier...
J'ai déjà eu des problème à ne pas le faire, style impossible de fermer
Access.
Ceci étant, je ne m'explique pas pourquoi j'ai eu le problème dans une base
neuve, avec un malheureux formulaire et quelques lignes de code (cf mon msg
initial).
Pour l'instant ma base de dév "tient le coup"...
Mais ma main au feu que demain matin, ca remet ça.
Je suis seul à développer sur cette base, notre réseau 100mbits est fiable,
ainsi que le serveur. J'ai d'autres applis qui fonctionne quotidiennement
sans prob.
A+
Xav.