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

IHM Discussion :

Choisir si tel champ d'un état doit être visible depuis un formulaire


Sujet :

IHM

  1. #1
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut Choisir si tel champ d'un état doit être visible depuis un formulaire
    Bonjour à tous,

    Je cherche à pouvoir choisir si certains champs doivent être visibles sur un état depuis un formulaire.
    Pour info, le formulaire en question possède un bouton pour lancer le preview d'un état. Je voudrais mettre un groupe d'option qui me permette de choisir si je veux l'historique ou non dans l'état.
    J'ai mis le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Opt_historique_AfterUpdate()
        Select Case Me.Opt_historique
            Case 1
                [Reports]![CG60_good].[etat1]!Image23.Visible = True
                ...
                [Reports]![CG60_good].[etat1]![Maitre ouvrage].Visible = True
            Case 2
                [Reports]![CG60_good].[etat1]!Image23.Visible = False
                 ...
                [Reports]![CG60_good].[etat1]![Maitre ouvrage].Visible = False
        End Select
    Lorsque je clique sur une option, le message d'erreur suivant apparait:
    Erreur d'exécution '2451':
    Le nom d'état 'CG60_good' entré dans votre expression est mal orthographié ou fait référence à un état qui n'est pas ouvert ou qui n'existe pas
    Je suppose que c'est dû au fait qu'il ne soit pas encore ouvert.

    D'où la question: comment définir un objet visible ou non dans un état depuis un formulaire?
    (l'état peut être lancé aussi depuis un autre formulaire)

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Il suffit de déplacer ton code dans le rapport et de regarder dans le formulaire ou d'utiliser OpenArgs et l'événement OnOpen.

    un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    if [forms]![MonForm]![MonChampParam]=maValeur then
      me.MonChamp.Visible =false
    end if
    Personnelement je préfère le OpenArgs mais c'est un peu plus compliqué.

    A+

  3. #3
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    Je me suis débrouillée pour mettre une variable booléenne publique dans un module.
    A l'évènement "AfterUpdate" sur ce groupe d'option, booléen = true si l'option est la 1e ==> au chargement de l'état, si booléen = true, alors l'historique est visible.

    Il me semble que c'est la méthode la mieux adaptée car cet état peut être appelé:
    - depuis le formulaire montrant les détails sur les sites
    - depuis le formulaire multi-recherche pour imprimer tous les enregistrements sélectionnés dans la liste de résultats. Donc la variable booléenne dépend de ce groupe d'option qui est sur 2 formulaires.

    J'ai bon?
    En tous cas, ça marche...

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    La variable globale est une solution mais elle doit être utiliser avec précaution. Le problème des variables globales c'est qu'elles peuvent être utilisées n'importe où dans l'appli et surtout modifiées par n'importe quel module.

    Je te conseillerai plutôt l'usage de OpenArgs avec un code du genre.

    Dans un module tu défini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    global const AFFICHER_HISTORIQUE as boolean = true
    global const NE_PAS_AFFICHER_HISTORIQUE as boolean = false
    Dans ton rapport :

    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
     
    Private Sub Report_Open(Cancel As Integer)
     
      if not isnull(me.openargs) then
        dim prmAfficherHisto as boolean
        prmAfficherHisto=CBool(me.OpenArgs)
     
        if prmAfficherHisto =  AFFICHER_HISTORIQUE then
            me.histo.visible=false
          else
            me.histo.visible=true
        end if
     
      end if
     
    End Sub
    lors de ton appel, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docmd.OpenReport "monRapport",,,,,AFFICHER_HISTORIQUE
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    docmd.OpenReport "monRapport",,,,,NE_PAS_AFFICHER_HISTORIQUE
    C'est plus lourd mais cela a les avantages suivants :

    - c'est lisible directement, pas besoin d'ouvrir le rapport pour savoir comment le true/false sera interprété.

    - Il n'y a pas de risque de polution de ta variable globale par un autre module.

    A+

  5. #5
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    Merci pour le conseil.
    Je vais mijoter tout ça.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choisir les colonnes (champs) d'un état avant son affichage
    Par Stéph utilisateur d'acces dans le forum IHM
    Réponses: 11
    Dernier message: 11/06/2011, 10h10
  2. Réponses: 1
    Dernier message: 31/10/2007, 21h43
  3. Rendre invisible un champs dans un état
    Par AnestheziE dans le forum Access
    Réponses: 3
    Dernier message: 12/09/2005, 20h04
  4. Sommer les champs d'un état?
    Par drthodt dans le forum IHM
    Réponses: 8
    Dernier message: 12/09/2005, 10h47
  5. Comment exclure un champ d'un état avec Crystal report 8.5??
    Par Joachim dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 02/06/2005, 14h15

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