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 :

Ruban Invalidate / Refresh selon droit d'accès-reconnexion


Sujet :

VBA Access

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut Ruban Invalidate / Refresh selon droit d'accès-reconnexion
    Bonjour ,

    J'aurais un souci concernant le "nouveau" ruban Access (depuis AC2007) , je l'ai totalement refondu pour mon application (dans le cadre d'une migration AC97 -> AC10).

    Mais la chose étant que il doit y avoir une gestion par niveau d'accès qui ne semble pas être évidente (à moins que je passe a coté d'un détail dans mon écriture de code...) !

    Par exemple le tab4 ne s'affiche plus (il reste en visible = False alors que je suis connecter en Compte accès 9000). Ensuite pour les Enabled , les boutons ne se false pas ... par exemple il marche une fois de temps en temps ,quand je passe de Droit9000 à Droit1000 il me Enabled=False bien les 5buttons , mais après si je passe en droit2000 il me garde les 5buttons false ... alors que normalement il ne doit en avoir que 3 , et l'affichage de la Tab4 ne se fait pas non-plus.

    Donc voici la partie de la fonte concernant les gestion d'accès qui ne marche pas.

    Get_Visible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Ribbon_GetVisible(control As IRibbonControl, ByRef visible)
    Select Case control.Id
    Case "tab4"
     
        If Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces] < 2999 Then
       visible = False
       Else
       visible = True
       End If
     
    End Select
    End Sub
    Get_Enabled :
    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
     
    Sub Ribbon_GetEnabled(control As IRibbonControl, ByRef enabled)
    Select Case control.Id
     
    Case "button6"
       If Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces] = 1000 Then
       enabled = False
       Else
       enabled = True
       End If
     
    Case "button7"
       If Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces] = 1000 Then
       enabled = False
       Else
       enabled = True
       End If
     
    Case "button8"
       If Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces] < 5999 Then
       enabled = False
       Else
       enabled = True
       End If
     
    Case "button12"
       If Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces] < 2999 Then
       enabled = False
       Else
       enabled = True
       End If
     
    Case "button13"
       If Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces] < 2999 Then
       enabled = False
       Else
       enabled = True
       End If
     
    End Select
    End Sub
    Information supplémentaire : txtAcces est la zone dans mon Bandeau qui affiche le droit de l'utilisateur.

    J'ai aussi essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![F_PRINCIPAL]![SF_bandeau]![txtAcces].Value
    Mais sans succès...

    Je m'en remet donc à vous pour m'aider.

    Merci par avance ,

    Cordialement ,

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    Il semblerais que ce soit un problème de rechargement de mon Ribbon...


    Je ne trouve pas la bonne écriture pour le recharger à la reconnexion..

    Si quelqu'un à une idée ...

    J'ai essayer sur le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Case "button1"
        Call OuvrirUnSeulFormulaire("F_connexion")
    En mettant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Case "button1"
    Unload (customUI) 
        Call OuvrirUnSeulFormulaire("F_connexion")
    Mais je ne sais pas arrivée à le décharger...

    Merci à celui qui va largement me débloquer ...

    Cordialement ,

    EDIT 15h20 : Essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CommandBars("ribbon").reset

  3. #3
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    bjr,

    un ruban ne se décharge pas
    il est chargé une fois pour toute et n'est modifié que par les callback

    la demande de mise à jour du ruban se fait par des Invalidate et InvalidateControl

    cf le tuto :
    http://warin.developpez.com/access/ruban/#LVII

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    Bonjour et merci de ta réponse ,

    J'ai donc chercher dans ce sens mais je ne m'en sort pas ... !!

    J'ai suivi les indications que j'ai trouver la :
    http://msdn.microsoft.com/en-us/library/aa433869.aspx
    Mais cela ne marche pas , il m'annonce toujours des problème de End Sub / end function alors que tout y es ... !

    1°-------------------------------------------------------------------

    Et en mettant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Ribbon_OnAction(control As IRibbonControl)
    Dim customUI As IRibbonUI
     
    Select Case control.Id
    'Début des boutons du menu : Fichier
    Case "button1"
        Call OuvrirUnSeulFormulaire("F_connexion")
        Sub myFunction()
         customUI.Invalidate
    End Sub
    End Select
    End Sub
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Ribbon_OnAction(control As IRibbonControl)
    Dim customUI As IRibbonUI
    Select Case control.Id
    'Début des boutons du menu : Fichier
    Case "button1"
        Call OuvrirUnSeulFormulaire("F_connexion")
       customUI.Invalidate
     
    End Select
    End Sub
    Et dans mon XML j'ai bien procéder comme indiquer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="MyAddInInitialize">
        <!--Ruban Version 1.0-->
        <ribbon startFromScratch="false">
             <tabs>
                  <tab id="tab1" label="Fichier">
                       <!---->
                       <group id="group2" label="Fichier">
                            <!---->
                            <button id="button1" label="Re-Connexion" onAction="Ribbon_OnAction" imageMso="Connections" size="large"/>
                            <button id="button2" label="Quitter" onAction="Ribbon_OnAction" imageMso="FileExit" size="large"/>
                       </group>
    Rien ne passe ... :S ! Toujours une erreur sur le : "Invalidate".

    Et il ne semble pas exister de tutoriel précis sur ce point .. L'aide F1 , et msdn est trop light et pas orienté fonctionnel :S !!

    Et le liens vers : http://warin.developpez.com/access/ruban/#LVII
    Ne m'éclaire pas assez sur le détails ..

    2° ---------------------------------------------------------
    Avec un mix de tout ce que j'ai pu comprendre (Merci : http://warin.developpez.com/access/favoris/#LIV-E Qui ma permis de voir que je n'avais pas mis en public le oMonRuban)j'ai réalisée ceci ... qui pour moi ne devrais pas être loin de ce qu'il faille faire , mais qui ne marche toujours pas , et me bloque les boutons du coup :s (Callback impossible)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Ribbon_OnAction(control As IRibbonControl)
    Dim oMonRuban As IRibbonUI
     
    Select Case control.Id
    'Début des boutons du menu : Fichier
    Case "button1"
        Call OuvrirUnSeulFormulaire("F_connexion")
         Call rechargement
     
    Case "button2"
       Application.Quit acQuitSaveAll
       'Fin des boutons du menu : Fichier
    [...]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub MyAddInInitialize(ribbon As IRibbonUI)
    Dim oMonRuban As IRibbonUI
        Set oMonRuban = ribbon
    End Sub
     
    Public Function oMonRuban() As IRibbonUI
    End Function
     
    Sub rechargement()
    Dim oMonRuban As IRibbonUI
    oMonRuban.Invalidate
    End Sub
    (il me met une Erreur 91 sur la ligne : "oMonRuban.Invalidate" Variable objet ou variable de bloc With non definie )
    Et toujours avec le XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="MyAddInInitialize">
        <!--Ruban Version 1.0-->
        <ribbon startFromScratch="false">
             <tabs>
                  <tab id="tab1" label="Fichier">
                       <!---->
                       <group id="group2" label="Fichier">
                            <!---->
                            <button id="button1" label="Re-Connexion" onAction="Ribbon_OnAction" imageMso="Connections" size="large"/>
                            <button id="button2" label="Quitter" onAction="Ribbon_OnAction" imageMso="FileExit" size="large"/>
                       </group>
    Un grand merci a qui pourra me débug cela ... étant mon dernier souci avec cette base avant déploiement
    (5jours de retard sur la deadline c jouable ... Merci Office et le ribbon !! )
    Cordialement ,

  5. #5
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    là c'est pas bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub MyAddInInitialize(ribbon As IRibbonUI)
    Dim oMonRuban As IRibbonUI
        Set oMonRuban = ribbon
    End Sub
     
    Public Function oMonRuban() As IRibbonUI
    End Function
     
    Sub rechargement()
    Dim oMonRuban As IRibbonUI
    oMonRuban.Invalidate
    End Sub
    oMonRuban doit être déclaré une seule fois en début de module (sinon c'est une variable locale différente pour chaque procédure)
    la fonction oMonRuban doit être supprimée

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    Ok J'ai donc fait comme ceci :

    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
    Option Compare Database
    Option Explicit
     
    Function oMonRuban() As IRibbonUI
    End Function
     
    '[...reste du code...]
     
    Sub MyAddInInitialize(ribbon As IRibbonUI)
      Set oMonRuban = ribbon
    End Sub
     
    Sub rechargement()
    oMonRuban.Invalidate
    End Sub
    Et il me met toujours l'erreur 91 sur : oMonRuban.Invalidate

    Je tourne en rond ? Dans la logique je pense ne pas être très loin , me manquerais un souci de déclaration ? de nommage ?!!

    Merci encore et désoler des pavés d'écriture et de code , mais je préfère être le plus clair possible jusque le détails.

  7. #7
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    oMonRuban ne doit pas être une fonction mais une variable

    au lieu de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public oMonRuban As IRibbonUI

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2010
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 385
    Par défaut
    MERCI !!!

    Cela marche !!! Et les contrôle suivant droit d'accès ce font parfaitement ! J'étais si près et si loin en même temps !

    Je te remercie encore ! Je pense que je ferais une contribution sur ce sujet qui est je trouve est très intéressent et trop peu parler en détail.

    Cordialement ,

Discussions similaires

  1. [Débutant] privileges et droit d'acces selon utilisateur dans une application web
    Par handsome01 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/02/2012, 19h20
  2. [Tomcat]Droit d'accès aux fichiers créés par une servlet
    Par loulouleboss dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 15/07/2004, 14h32
  3. pg_dump et droit d'acces
    Par Mu_Belier dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 28/06/2004, 13h17
  4. Module Apache et droits d'accès
    Par Jean++ dans le forum Apache
    Réponses: 3
    Dernier message: 28/04/2004, 16h28
  5. Droit d'acces sur rep partagé Windows
    Par MrEddy dans le forum Réseau
    Réponses: 2
    Dernier message: 10/02/2004, 15h34

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