2009-07-21 9 views
3

Existe-t-il un moyen d'ouvrir une base de données MS Access à partir de VB 6.0 utilisée par un autre utilisateur.Ouverture d'une base de données MS Access à partir de VB utilisé par un autre utilisateur

J'ai un service qui met à jour un fichier .mdb. Je veux surveiller cette DB en lisant périodiquement certains paramètres.

Si je tente simplement ouvrir le DB (qui fonctionne si la DB n'est pas utilisé) comme ceci:

Private Sub Form_Load() 
Dim CurrentDBFileName 
On Error GoTo ErrorHandler 
    Set BaseDB = OpenDatabase("c:\temp\log_db.mdb") 
    Set DestRS = BaseDB.OpenRecordset("current_log_info", dbOpenDynaset) 
    DestRS.MoveFirst 
    CurrentDBFileName = DestRS!CurrentDB 
    BaseDB.Close 
ErrorHandler: 
    Debug.Print Err.Number; Err.Description 
End Sub 

L'erreur que je reçois:

3051 Le moteur de base de données Microsoft Jet ne peut pas ouvrir la fichier 'b: \ log_db.mdb'. Il est déjà ouvert exclusivement par un autre utilisateur, ou vous avez besoin d'une autorisation pour afficher ses données.

Comment puis-je contourner le problème?

Je ne peux pas changer le service en mettant à jour le fichier MDB puisqu'il ne m'appartient pas.

Répondre

3

Essayez:

Set BaseDB = OpenDatabase("gui_db.mdb", false) 

Pour ouvrir la base de données en mode partagé. Notez que tous les clients doivent ouvrir la base de données en mode partagé.

0

Bien sûr, la meilleure option est de convaincre la personne qui a écrit le service de mise à jour qu'elle devrait vraiment ouvrir la base de données en mode partagé, et non en mode exclusif.

Une autre option pourrait être de fractionner la table mdb que vous voulez mettre à jour dans un backend séparé (soit une autre base de données Access, soit SQL Server). Ensuite, si le service ouvre le fichier frontend exclusivement, votre fichier backend doit toujours être partagé. Le service de mise à jour ne devrait pas pouvoir voir la différence.

Questions connexes