IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Comment vérifier si une base de données est encore ouverte?


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 1
    Par défaut Comment vérifier si une base de données est encore ouverte?
    Bonjour


    Je cherche désespérément à savoir s'il est possible, grâce à une fonction VBA dans une première base de donnée, de vérifier si une deuxième basse de données est ouverte.

    Si oui, auriez vous la gentillesse de m'indiquer qu'elle est la procédure à suivre

    j'ai tenté avec cette procédure mais elle ne semble pas fonctionner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Function FctVerifFermeture() As Boolean
    Dim objAccess As Access.Application
    Dim StrChemin As String
    Dim BooFerme As Boolean
     
    BooFerme = False
     
        On Error GoTo FctVérifFermeture_Err
     
    StrChemin = "chemindemonapplication2\Basededonn2.mdb"
     
    Set objAccess = New Access.Application
     
    'ici je ne sais plus quoi faire
     
     
    BooFerme = Not objAccess.isopen
     
    FctVerifFermeture = BooFerme
     
    End Function



    Merci à l'avance

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonjour,

    Je pense que le plus simple est de tester l'existence du .ldb

  3. #3
    Membre émérite Avatar de stigma
    Homme Profil pro
    Créateur jeux vidéo
    Inscrit en
    Octobre 2003
    Messages
    1 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Créateur jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 130
    Par défaut
    ce code trouvé sur le net que j'ai un peu modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Private Function QuiEstLa() As String
     
        On Error GoTo Err_QuiEstLa
     
       Dim iLDBFile As Integer, iStart As Integer
       Dim iLOF As Integer, i As Integer
       Dim sPath As String, x As String
       Dim sLogStr As String, sLogins As String
       Dim sMach As String, sUser As String
       Dim rUser As Utilisateurs
       Dim dbCurrent As Database
     
        sPath = Chemin + ".ldb"
     
       x = Dir(sPath)
       iStart = 1
       iLDBFile = FreeFile
     
       Open sPath For Binary Access Read Shared As iLDBFile
       iLOF = LOF(iLDBFile)
       Do While Not EOF(iLDBFile)
          Get iLDBFile, , rUser
          With rUser
             i = 1
             sMach = ""
             While .bMach(i) <> 0
                sMach = sMach & Chr(.bMach(i))
                i = i + 1
             Wend
          End With
          sLogStr = sMach & " -- " & UserLogin(sMach)
     
          If InStr(sLogins, sLogStr) = 0 Then
             sLogins = sLogins & sLogStr & ";"
          End If
     
          iStart = iStart + 64
       Loop
       Close iLDBFile
       QuiEstLa = sLogins
     
    Exit_QuiEstLa:
       Exit Function
     
    Err_QuiEstLa:
       If Err = 68 Then
          MsgBox "Fichier LDB introuvable", 48
       Else
          MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description
          Close iLDBFile
       End If
       Resume Exit_QuiEstLa
     
    End Function

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Je pense que le plus simple est de tester l'existence du .ldb
    C'est une bonne idée mais ça ne marche pas toujours, si on ferme la base correctement le fichier ldb est supprimé, mais si on la ferme brusquement (Ctrl Alt Suppr) par exemple, la base est fermée mais le ldb y est encore, il faut rouvrir la base ensuite la refermer correctement pour qu'il soit supprimé, ce qui fait que le truc du ldb n'est pas une solution fiable

    Comme solution facile il faut essayer de renommer la base, si elle est encore en utilisation on aura l'erreur 75
    et on l'exploite, si on n'a pas cette erreur donc elle a été renommé, et on va la lui rendre son nom d'origine

    On peut aussi essayer de la supprimer ! si on veut vraiment ça, si on a l'erreur n° 70 c'est qu'elle est ouverte

    On peut aussi essayer de la compacter si elle est ouverte ça génère l'erreur 31523

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Oui le ldb n'est pas fiable à 100% mais c'est très facile à faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if dir("X:\TonChemin\TaBD.ldb")<>"" then
       msgbox "La BD est probablement ouverte."
    end if
    Tu n'as même pas à regarder ce que le fichier contient.

    Sinon, tu peux essayer d'ouvrir la BD en mode exclusif.
    Si elle est déjà utilisée tu vas avoir une erreur.

    Et un autre test consisterait à essayer de détruire le fichier .ldb.
    Là aussi si il est utilisé tu vas récevoir une erreur.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 93
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Et un autre test consisterait à essayer de détruire le fichier .ldb.
    Là aussi si il est utilisé tu vas récevoir une erreur.
    Je crois que c'est la meilleure solution sans toucher à la base.
    merci beaucoup

    Seulement pour mon code je veux soit supprimer soit déplacer la base (pour la remplacer par une sauvegarde)
    donc je récupère l'erreur 75 ou 70 et j'affiche un message fermez l'application sur tous les postes...

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/06/2010, 11h09
  2. Comment se connecter à une base de données se trouvant sur un serveur ?
    Par McLéonce dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 26/09/2006, 13h48
  3. Réponses: 1
    Dernier message: 15/09/2006, 11h24
  4. Réponses: 2
    Dernier message: 27/06/2006, 09h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo