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 :

[ac-2003] Bouton visible/invisible si champ sous formulaire Null


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 8
    Points
    8
    Par défaut [ac-2003] Bouton visible/invisible si champ sous formulaire Null
    Bonjour à tous,
    premier post, je fais essayer de faire clair et court, merci d'avance de votre aide.

    Dans un formulaire, j'ai besoin de rendre visible ou invisible un bouton en fonction du résultat du sous formulaire.

    Formulaire : Fgestion
    où l'on rentre un numéro de cmde, ex : 001987, dans une zone de saisie.
    sous formulaire : sfgestion
    où les commandes correspondantes s'affichent en lignes.

    cible :
    si le numéro de la commande ne renvoie rien dans le sous formulaire (champ "ID"), faire apparait le bouton "bajout".
    si le numéro de la commande renvoie une ligne, ne pas le faire apparaître.

    au niveau du code, j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      If isnull(me.[sfgestion].Form![ID]) then
        Me.bajout.visible=false
      else
        Me.bajout.visible=true
      end if
    le problème, c'est que je ne sais pas où le placer ! sur quel évènement d'une part, et à quelle place d'autre part : sur le formulaire principal ou sur la zone de saisie qui mets à jour le sous formulaire.

    après quelques essais, il semblerait qu'il n'arrive pas à trouver le champ que je lui ai spécifié.

    autre chose, comment savoir si le sous formulaire est en mode continu, ce qui semble être un point bloquant ?

    merci d'avance pour votre rép, je n'ai malheureusement pas la base sous les yeux mais je m'efforcerais d'être plus précis si besoin.

    bon we de pâques

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour et bienvenue sur le Forum...

    Normalement, si ton MCD est bien conçu, tu ne devrais pas pouvoir taper un N° de commande ne possédant aucun détail de commande.
    Si tel est la cas, cela signifierait que tu as créé une commande vide qu'avec l'entête de commande (Réf client, date de commande etc...).
    Je crois qu'il faut que tu repenses ton principe.

    De manière générale, dans une appli commerciale telle que la tienne, tu dois avoir un formulaire pour saisir de nouvelles commandes et un pour les consulter avec respectivement pour chacun d'eux le sous-formulaire en regard et respectivement les propriétés d'autorisation d'ajout, modification et suppression à True et False.
    En mode consultation/MAJ de commandes, le bouton Ajout existe et reste activé mais il n'existe pas dans le formulaire de création de commande.

    Le bouton Ajout permettrait alors d'ajouter des articles par exemple mais il faudrait aussi prévoir un bouton Modifier, enfin, tu vois, là où je veux te guider... ?

    Maintenant si tu veux rester sur ta position, il faut gérer l'événement AfterUpdate de ta zone de saisie et faire un DCount() des lignes avec la condition WHERE établie sur ID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vntOrdersCount = DCount("[ID]", "TBLOrderDetails", "[ID]=" & Me!ID)
    btnAjout.Visible = (vntOrdersCount > 0)
    vntOrdersCount est une variable de type Variant.

    Argy

    Entre (), le champ ID est un peu vague. IDCommande serait plus approprié car chaque table d'un tel projet possède un champ ID à nommer en conséquence de ce qu'il représente....
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    hello,
    merci de ta réponse tout d'abord.

    pour la première partie, en fait les commandes sont alimentées par un fichier excel importé dans la base (et extrait depuis une autre appli). les commandes sont ensuites réparties sur les gestionnaires (selon un autre formulaire et une table portefeuille), et le formulaire dont je parle permet juste de "retrouver" ces commandes en en affichant les détails.
    mais ttes les commandes ne sont pas présentes dans la base : l'exemple type est une commande trop ancienne et non ramenée par l'appli amont.
    c'est pour cela que je voulais avoir le bouton Ajout (qui mène à un formulaire de saisie) à cet endroit.

    pour le code de la deuxième partie de ta réponse, je trouvais cela logique de le mettre sur l'évenement AfterUpdate du bouton de saisie (ca me rassure, je suis pas complétement une brelle )

    par contre, le champ ID est dans un sous formulaire sfGestion, dans ce cas la formule est elle appropriée?

    je ne pourrai tester que mardi mais j'essaye de défricher au maximum.

    merci encore,
    olivier

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par rdz-oliv Voir le message
    par contre, le champ ID est dans un sous formulaire sfGestion, dans ce cas la formule est elle appropriée?
    Ce que je te suggérais, dans la mesure où tu étais en mode conception, c'est de ne pas nommer un champ ID car c'est peu parlant.
    Donc, si du coté Formulaire Parent et Sous-Formulaire, il doit, selon ce que j'ai compris, exister un champ ID ; dans ce cas, oui, ça fonctionnera.

    Mais dans l'absolu, tu devrais renommer ton txtBox de saisie du # OrderID soit par exemple txtIDOrder ce qui donnerait alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vntOrdersCount = DCount("[ID]", "TBLOrderDetails", "[ID]=" & Me!txtIDOrder)
    btnAjout.Visible = (vntOrdersCount > 0)
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mai 2012
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2012
    Messages : 172
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Je reviens sur ce sujet qui est déjà ancien mais le raisonnement me parait intéressant dans mon problème.

    J'ai sur un formulaire un bouton qui se nomme btn_plaintes sous ACCESS2010.

    Lorsqu'une personne fait une recherche dans le formulaire, je voudrais que ce bouton s'affiche (ou encore mieux, devient rouge) pour indiquer que sur cette personne, elle a déposé une plainte.
    En cliquant sur ce formulaire, qui est relié sur le premier formulaire, on voit la raison du problème.

    Le problème est que le bouton est tout le temps affiché, même si'il n'y a pas eu de plaintes. Lorsque l'on clique sur ce bouton, le formulaire "PLAINTE" est totalement vide (ce qui est logique)

    Je voudrais que ce bouton s'active ou change de couleur pour signifier que le formulaire "PLAINTE" n'est pas vide.

    Merci !

  6. #6
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    ambact,

    Ce formulaire plainte dont tu parles est nécessairement basé sur une table, tu vas donc pouvoir récupérer le nombre de lignes impactées par une plainte en utilisant la fonction dcount dans la table souhaitée :

    Regarde cet article : http://starec.developpez.com/tuto/fo...maines/#LIII-C

    et plus condensé ici :

    http://office.microsoft.com/fr-fr/ac...010096295.aspx

    Pour connaître à chaque changement d'enregistrement sur le formulaire ou tu souhaites placer ton alerte, tu pourras utiliser la propriété <surActivation> du formulaire. En y plaçant ton dcount, tu pourras agir sur le bouton visible ou invisible (me.monbouton.visible = false ou true) ou tes couleurs de fond (backcolor).

    Tu as ta piste, je te laisses creuser un peu tout çà et me faire un retour si nécessaire.

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

Discussions similaires

  1. bouton visible / invisible joueur
    Par Strig dans le forum Access
    Réponses: 14
    Dernier message: 29/08/2012, 05h25
  2. Rendre un bouton visible / invisible
    Par Invité dans le forum PL/SQL
    Réponses: 2
    Dernier message: 02/08/2012, 08h27
  3. Réponses: 3
    Dernier message: 18/06/2010, 12h04
  4. Bouton visible/invisible userform
    Par AMO05 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/05/2009, 10h57
  5. Réponses: 3
    Dernier message: 03/02/2009, 18h36

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