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 :

Ouvrir bdd en mode exclusif, puis repasser en normal


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut Ouvrir bdd en mode exclusif, puis repasser en normal
    Bonjour à tous !

    j'aimerais savoir si il est possible d'ouvrir la base actuelle en mode exclusif, faire une manipulation, puis ensuite la ré-ouvrir en mode normal? Ceci afin de changer le mot de passe pour accéder à la base de données.

    Car bien que j'ouvre la base de données en mode exclusif, grâce au tuto de developpez.net, après avoir appelé la fonction j'ai le message box qui m'affiche comme quoi la base de données est bien ouverte en mode exclusif, mais à la ligne suivante, on me dit que la base de données n'est pas ouverte en mode exclusif ... je n'arrive pas trop à comprendre

    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
    Private Sub Commande0_Click()
    'On Error GoTo err
    Dim MaBase As Database
     
    Set MaBase = DBEngine(0).OpenDatabase("C:\Documents and Settings\xxx\Bureau\bd1.mdb", True)
    'ici appel de la fonction qui ouvre la bdd en mode exclusif
    [Mes Modules].Ouvrir_Base_Exclusif
    MaBase.NewPassword "", "nouveau"
    MsgBox "Mot de passe changé"
     
    fin:
    Set MaBase = Nothing
    Exit Sub
     
    err:
    Select Case err.Number
        Case 3031
            MsgBox "Mot de passe non valide", vbCritical, "Sécurité"
        Case Else
            MsgBox "Une erreur est survenue pendant le changement du mot de passe", _
                vbCritical, "Erreur"
    End Select
    Resume fin
    End Sub
    Merci d'avance à ceux qui pourront m'aider.

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Cette ligne ouvre déjà la base en mode exclusif
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MaBase = DBEngine(0).OpenDatabase("C:\Documents and Settings\xxx\Bureau\bd1.mdb", True)
    Je ne sais pas ce que fait
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    [Mes Modules].Ouvrir_Base_Exclusif
    mais je pense que c'est en trop.

    Code vb : 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
    Private Sub Commande0_Click()
    Dim MaBase As Database, strDB As String
     
    strDB = "C:\Documents and Settings\xxx\Bureau\bd1.mdb"
    On Error GoTo Errh
    Set MaBase = DBEngine(0).OpenDatabase(strDB, True)
    MaBase.NewPassword "", "nouveau"
    MsgBox "Mot de passe changé"
    MaBase.Close
     
    fin:
    Set MaBase = Nothing
    Exit Sub
     
    Errh:
    Select Case Err.Number
        Case 3031
            MsgBox "Mot de passe non valide", vbCritical, "Sécurité"
        Case 3045
            MsgBox "La base est déjà ouverte en mode exclusif", _
                   vbCritical, "Ouverture impossible"
        Case 3356
            MsgBox "La base est déjà ouverte. Impossible de l'ouvrir en mode exclusif", _
                   vbCritical, "Ouverture impossible"
        Case Else
            MsgBox Err.Description, _
                vbCritical, "Erreur " & Err.Number
    End Select
    Resume fin
    End Sub
    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    Merci pour cette réponse !

    Mais si je veux changer le mot de passe de la base de données qui est en cours d'utilisation c'est possible ? car quand j'essai de l'ouvrir en mode exclusif ça me met quand même quand je clique sur le bouton pour changer le mot de passe "La bdd est ouverte en mode partagé..."

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Non, je ne vois pas comment faire si la base à ouvrir en mode exclusif est la base en cours.

    On ne peut pas non plus la fermer car si le code est dans la base en cours cela l'arrête pour fermer la base.

    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 27
    Points : 21
    Points
    21
    Par défaut
    bon bah tant pi ^^ Merci quand même

  6. #6
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Tu peux le faire à l'aide d'une autre base Access.
    Cette base possède un formulaire qui s'ouvre à l'ouverture de la base (Outils->démarrage).
    Le formulaire a les contrôles suivants :
    txtBDD : zone de texte
    txtOldPwd : zone de texte (masque de saisie : Mot de passe)
    txtNewPwd : zone de texte (masque de saisie : Mot de passe)
    cmdModifier : bouton

    code événement sur chargement de ce formulaire :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Load()
    Dim strDB As String
     
    strDB = Nz(Command(), "")
    Me.txtBDD = strDB
    End Sub
    code événement sur clic du bouton cmdModifier :
    Code vb : 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
    Private Sub cmdModifier_Click()
    Dim db As DAO.Database, strDB As String
    Dim strCMD As String, strOldPwd As String, NewPwd As String
    Dim Tmr As Single, blnSkipErr As Boolean
     
    strDB = Nz(Me.txtBDD, "")
    strOldPwd = Nz(Me.txtOldPwd, "")
    NewPwd = Nz(Me.txtNewPwd, "")
    If strDB = "" Then Exit Sub
     
    DoCmd.Hourglass True
    Tmr = Timer: blnSkipErr = True
    On Error GoTo Errh
    Do
       DoEvents
       Set db = DBEngine(0).OpenDatabase(strDB, True, False, ";PWD=" & strOldPwd)
       blnSkipErr = (Timer - Tmr < 2)
    Loop Until (Not db Is Nothing)
    blnSkipErr = False
     
    db.NewPassword strOldPwd, NewPwd
    db.Close
    Set db = Nothing
    strCMD = """" & Application.SysCmd(acSysCmdAccessDir) & "MSAccess.exe"" "
    strCMD = strCMD & """" & strDB & """ "
     
    Shell strCMD, vbNormalFocus
     
    DoCmd.Quit acQuitPrompt
     
    DoCmd.Hourglass False
    Exit Sub
     
    Errh:
    Select Case Err.Number
       Case 3045: If blnSkipErr Then Resume Next
       Case 3356: If blnSkipErr Then Resume Next
    End Select
    DoCmd.Hourglass False
    MsgBox Err.Description
    Set db = Nothing
     
    End Sub

    Dans la base pour laquelle tu veux modifier le mot de passe tu exécute ce code:
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim strCMD As String, strOldPwd As String, NewPwd As String
    Dim strDBChdPwd As String
     
    ' Nom complet de la bdd qui sert à changer de mot de passe
    strDBChdPwd = "E:\Temp\db_chgPwd.mdb"
     
    strCMD = """" & Application.SysCmd(acSysCmdAccessDir) & "MSAccess.exe"" "
    strCMD = strCMD & """" & strDBChdPwd & """ "
    strCMD = strCMD & "/cmd """ & CurrentProject.FullName & """"
     
    Shell strCMD, vbNormalFocus
     
    ' Ferme la base en cours
    DoCmd.Quit acQuitPrompt
    A+

Discussions similaires

  1. Mode exclusif d'une BDD
    Par winieloursonaub dans le forum Sécurité
    Réponses: 2
    Dernier message: 21/04/2010, 06h15
  2. Verrouiller un fichier en lecture / Ouvrir en mode exclusif.
    Par Cravis dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 03/08/2008, 09h59
  3. [Conception] exécution en mode exclusif. Accès bdd bloqué
    Par lodan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/04/2007, 20h45
  4. Réponses: 13
    Dernier message: 23/03/2007, 12h22

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