2008-09-26 7 views
5

Je travaille sur une base de données MS Access. J'ai apporté quelques modifications à l'un des modules. Je veux sortir pour déjeuner, mais quand j'essaye de fermer la base de données, je reçois le message suivant:Je n'ai pas d'accès exclusif à la base de données et je ne peux donc pas enregistrer les modifications

"Vous n'avez pas un accès exclusif à la base de données, vos modifications de conception ne peuvent pas être sauvegardées pour l'instant. fermer sans enregistrer vos modifications? " Je suis à peu près sûr que personne d'autre sur le réseau n'a le fichier de base de données ouvert, et que je n'ai aucune autre base de données Access ouverte. Je manque probablement quelque chose d'évident, mais j'apprécierais vraiment de l'aide!

Mise à jour:

En fin de compte je copiais tout le code, fermé la base de données sans enregistrer, réouverte et collé le code de retour dans j'étais alors en mesure de sauver la base de données.. Je ne suis pas sûr si c'était un, mais je rapporterai si ceci se produit encore.

Répondre

1

Si vous fermez la base de données et êtes sûr que personne d'autre ne l'a ouvert, vérifiez s'il existe un fichier .ldb (il aura le même nom que votre fichier de base de données). Si le fichier est là, il y a de fortes chances qu'il soit toujours utilisé. L'accès est-il assuré par un service, comme un site Web?

Vous pouvez copier la base de données dans un autre sous-répertoire et effectuer vos modifications. Si ça ne marche pas, je vais devoir regarder ça. Bien sûr, il y a toujours l'outil de base de données "réparer et compresser la base de données ..."

Le fichier se trouve-t-il sur un serveur de fichiers? Si c'est le cas, vérifiez si les utilisateurs disposent d'un gestionnaire de fichiers.

Si cela ne fonctionne toujours pas, mettez à jour votre message avec vos nouvelles informations et nous irons plus loin.

MISE À JOUR (9/26): Une autre chose que je fais quand j'ai des problèmes étranges avec les bases de données d'accès contenant le code vba est la décompilation. Je ne sais pas si cela est encore documenté, je n'ai pas regardé depuis des années, mais c'était (au moins) un passage non documenté à msaccess.

A partir d'une ligne cmd:

changement de répertoire à l'endroit où se trouve Msaccess.exe.
Exécutez la commande suivante

msaccess chemin \ pour accéder au fichier \ databasefile.mdb/décompiler

fonctionne habituellement très rapide ouvre alors la base de données. Ouvrez n'importe quel module et compilez.
Ne fonctionne pas toujours, mais parfois peut supprimer des événements étranges.

Avez-vous déjà essayé de copier la base de données dans un autre répertoire et de faire vos modifications? Cela devrait fonctionner; vous pouvez alors renommer l'original et copier le fichier.
En tout cas, je suis content que vous travailliez à nouveau.

+0

Merci - le fichier est situé sur mon disque dur, et personne d'autre n'y accède. – inglesp

4

Si vous êtes sûr que personne d'autre n'est dans la db mais vous, c'est une connexion supplémentaire à votre db depuis votre propre PC. Vous pouvez le vérifier avec la visionneuse LDB, téléchargeable dans le JetUtils gratuit.Télécharger exe de Microsoft:

http://support.microsoft.com/kb/176670

Regardez dans votre code et vérifiez si vous avez deux objets de base de données séparés dans l'espace de travail par défaut ou un autre objet de base de données dans un espace de travail séparé. Cela va causer ce problème. Pour résoudre ce problème, assurez-vous que les objets de base de données ne sont pas définis avant qu'ils ne soient hors de portée. Si vous avez ouvert l'objet de base de données dans le code, vous devez également le fermer avant de définir l'objet.

+0

ça a l'air très prometteur ... j'irai voir quand je serai de retour au bureau demain. – inglesp

0

Si même un publipostage de mot est lié à la base de données d'accès, cela compte comme une connexion d'accès.

+3

On dirait un commentaire, pas une réponse ... pouvez-vous élaborer là-dessus? – paisanco

+0

J'ai eu le même problème et c'était une opération de fusion et publipostage qui était encore ouverte en même temps. C'était une évidence et pourtant pas. Le moteur de base de données mettrait évidemment un frein à la base de données si le mot y pénétrait afin d'obtenir ses données pour la fusion. Essayez de faire quelque chose à l'intérieur de la base de données pendant qu'il est engagé et devinez quoi? : nous avons rencontré l'ennemi et c'est nous! Vous vous retrouverez en tant que l'autre utilisateur connecté, mais pas parce qu'il ne sera listé qu'une fois mais pas pour chaque application. –

0

Très simple. Fermez tous vos fichiers MSaccess. Ouvrir le gestionnaire de tâches (en faisant un clic droit sur la barre des tâches). Sélectionnez l'onglet Processus. Si la liste comporte un processus msaccess * 32, fermez-le en cliquant sur Terminer le processus.

Cela a fonctionné pour moi. Je pense qu'il ferme tout le jeu d'enregistrements que nous n'avons pas fermé dans les codes ou qui est fermé avec force.

Questions connexes