OVH Cloud OVH Cloud

Blocage acces fichier .mdb

2 réponses
Avatar
Jerome Peyrard
Bonjour,
Lors d'une tentative de mise à jour d'un fichier .mdb sur mon serveur,
exxcel 2003 me donne le message suivant:

Erreur d'execution 3051

le moteur de la base de donnée Microsoft Jet ne peut pas ouvrir le fichier
xxxxxx.mdb. il est déjà ouvert en mode exclusif par un autre utilisateur ou
vous devez avoir l'autorisation de visualiser ses données.
Or, ce fichier n'est en cours d'utilisation par personne...
Je pense qu'il s'agit d'un problème de droit... Quelqu'un peut-il m'aider???
Merci
--
Docteur Micro

2 réponses

Avatar
michel
Bonjour
Regarde dans le repertoire de ta base s'il ne reste pas un fichier
nomDeTaBase.LDB
Si oui vire le
@+
Michel
"Jerome Peyrard" a écrit dans le
message de news:
Bonjour,
Lors d'une tentative de mise à jour d'un fichier .mdb sur mon serveur,
exxcel 2003 me donne le message suivant:

Erreur d'execution 3051

le moteur de la base de donnée Microsoft Jet ne peut pas ouvrir le fichier
xxxxxx.mdb. il est déjà ouvert en mode exclusif par un autre utilisateur
ou
vous devez avoir l'autorisation de visualiser ses données.
Or, ce fichier n'est en cours d'utilisation par personne...
Je pense qu'il s'agit d'un problème de droit... Quelqu'un peut-il
m'aider???
Merci
--
Docteur Micro


Avatar
Philippe
Ce n'est pas parce que Access n'est pas ouvert que la table n'est pas encours
d'utilisation. En DAO, on touche les tables sans ouvrir l'applicatif access.
L'algoritme classique est en DAO ou ADO :

1/ J'ouvre la base
2/ Je crée mon jeux d'instruction
3/ xcontenu de mon travail (l'algo quoi !)
4/ Je ferme mon jeux d'instruction
5/ Je ferme ma base

Donc en théorie, si je plante au milieu, le risque est de sortir sans fermer
=> on ne peut plus entrer dans la table sans avoir ton message !

Solution :

- solution dure : refaire une session (si c'est sur ton DD, redemarrer; si
c'est sur le serveur voir avec l'admin réseau=> jouable)
-solution pluis fine : envoyer les instructions du 4/ et du 5/

Dans mon exemple ci-dessous, ca consisterait à envoyer ce code :

MASELECTION.Close
Temp.Close
Set Temp = Nothing
BaseSource.Close
Set BaseSource = Nothing

Mais créer juste ce code est compliqué, MASELECTION et Temp n'étant pas
défini dans ce contexte.

donc ce que je ferais, c'est de refaire tourner le code avec l'instruction
"On error resume next" placé au début. Ainis, je suis sur que le code de
fermeture est envoyé.

Et si jamais tu ne trouves rien de ce code à la fin, il te faudra l'ajouter.

En espérant avoir été suffsament clair.
Bon courage.

Philippe



Exemple :

Set BaseSource = DBEngine.Workspaces(0).OpenDatabase("G:Mes
DocumentsInventoristeAdministratif.mdb")

MySql = "SELECT NDF.ACRO, NDF.SEMAINE, NDF.ANNEE FROM NDF WHERE
(((NDF.ACRO)=""" & MONACRO & """) AND ((NDF.SEMAINE)=" & MASEMAINE & ") AND
((NDF.ANNEE)=" & MONANNEE & "));"
'Mysql = "Select VERIF_ACRO.ACRO From VERIF_ACRO;"

Debug.Print MySql
Set Temp = BaseSource.CreateQueryDef("", MySql)
Set MASELECTION = Temp.OpenRecordset()

If MASELECTION.RecordCount <> 0 Then
DOUBLON_NDF_OK = False
End If

MASELECTION.Close
Temp.Close
Set Temp = Nothing
BaseSource.Close
Set BaseSource = Nothing

end sub











Bonjour
Regarde dans le repertoire de ta base s'il ne reste pas un fichier
nomDeTaBase.LDB
Si oui vire le
@+
Michel
"Jerome Peyrard" a écrit dans le
message de news:
Bonjour,
Lors d'une tentative de mise à jour d'un fichier .mdb sur mon serveur,
exxcel 2003 me donne le message suivant:

Erreur d'execution 3051

le moteur de la base de donnée Microsoft Jet ne peut pas ouvrir le fichier
xxxxxx.mdb. il est déjà ouvert en mode exclusif par un autre utilisateur
ou
vous devez avoir l'autorisation de visualiser ses données.
Or, ce fichier n'est en cours d'utilisation par personne...
Je pense qu'il s'agit d'un problème de droit... Quelqu'un peut-il
m'aider???
Merci
--
Docteur Micro