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 :

Formulaire : Source contrôle "multiple" [AC-2007]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Points : 107
    Points
    107
    Par défaut Formulaire : Source contrôle "multiple"
    Bonjour,

    Après plusieurs recherches non fructueuses, je me permet de poster une nouvelle discussion.
    Si cette question a déjà été posté, j'en suis désolé je n'ai rien trouvé !

    J'ai un formulaire composé d'un sous formulaire.
    Les champs soulignés sont les composants de clef primaire.
    Le formulaire (frmRDVClient) affiche les données venant de la table tblRDVClient :
    {id_client, id_rdv_client, date_rdv, heure_rdv, annul_rdv, client_absent_rdv, retard_client_rdv}

    Le sous formulaire (frmRDVClient_AnimalRDV_sub) affiche les données de la table tblAnimalRDV :
    {id_client, id_type_animal, id_race, id_animal, id_rdv_client, id_type_forfait}

    Comme vous l'avez compris les champs pères/fils sont id_client, id_rdv_client.

    Les champs de la table tblAnimalRDV suivants id_type_animal, id_race, id_animal sont les composants d'une clef primaire d'une table nommée tblAnimal.


    Mon problème :

    Je voudrai avoir la liste complète d'animaux dans une liste déroulante du sous formulaire et donc contrôler les 3 champs qui permettent de définir l'animal sans avoir à faire 3 listes déroulantes contrôlant chaque champs indépendamment.

    J'ai d'abord mis le paramètre id_client dans la requête permettant d'afficher la liste de l'id_animal.
    Ça permet d'afficher la liste d'animaux du client uniquement, dans le principe c'est bien...

    Cependant pour :
    id_type_animal, id_race, id_animal
    1 , 1 , 1
    ou
    2 , 1 , 1

    Ce qui est affiché une fois la sélection faite dans la liste déroulante contrôlant id_animal reste l'animal {1,1,1} puisque le seul critère de la liste est le dernier champ.


    J'ai ensuite essayé de créer 3 liste déroulantes avec le contrôle sur id_type_animal et id_race qui sont masqués et remis à jour une fois la liste déroulante id_animal entrée.

    Si les champs masqués sont vides, la requête renvoi la liste d'animaux du client, une fois l'animal sélectionné les champs masqués sont mis à jour et la requête n'affiche plus que l'animal sélectionné permettant d'avoir le bon affichage.

    Cependant mon sous formulaire (frmRDVClient_AnimalRDV_sub) est un formulaire continu (affichant la liste de tout les enregistrements)

    Donc ma bidouille fonctionne d'un point de vue fonctionnel mais en fonction de l'enregistrement sélectionné, l'ensemble des listes déroulantes contrôlant id_animal affichent la même chose.

    Donc y a t'il un moyen de faire quelque chose comme ci-dessous?
    Nom : Sans titre.png
Affichages : 391
Taille : 55,6 Ko

    Voici quelques screenshot pour mieux comprendre le problème (les 2 listes déroulantes numériques à droite sont les champs masqués que j'ai rendu visible pour mieux comprendre) :
    Nom : Capture.JPG
Affichages : 411
Taille : 59,9 Ko
    Nom : Capture2.JPG
Affichages : 373
Taille : 61,7 Ko


    Si nécessaire, je peux mettre la BD en ligne pour mieux comprendre le problème.

    Merci par avance de votre aide.
    Il y a 10 types de personnes dans le monde : ceux qui comptent en binaire et les autres.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    C'est un gag classique avec les listes déroulantes dépendantes et les formulaire en mode continu et feuille de données.
    Access n'a en réalité qu'un seul contrôle qu'il répète sur toutes les lignes.

    La seule parade possible est d'avoir une zone pour la sélection et une zone pour l'affichage.

    Personnellement je me sert de 2 listes déroulantes (ex : cmbChoixAnimal et cmbAffAnimal). La liste de choix est conditionnée, la liste d'affichage ne l'est pas.
    Aussi pour éviter un effet "arbre de Noel", j'assigne la source de la liste de choix uniquement à la réception du focus et je la désassigne après.

    Une autre acrobatie possible, comme tu es dans un formulaire en mode continu, est d'avoir une liste déroulante pour la sélection à fond transparent est un zone de texte pour l'affichage. Tu glisses la liste déroulante sur la zone de texte ce qui donne l'illusion que la liste contient quelque chose alors qu'elle est vide.

    Ça marche mais la gestion des focus est un peu délicate quand l'utilisateur se déplace avec tabluation.

    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.

  3. #3
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Points : 107
    Points
    107
    Par défaut
    Merci beaucoup pour ta réponse !

    En lisant cet article :
    http://cafeine.developpez.com/access...pseudocontinu/

    J'ai compris que ça ne serait pas possible de façon "simple".
    Je vais essayer ta solution plutôt que celle sur le lien, la tienne demande moins d'efforts pour un résultat suffisant je pense... ^^

    Je reviens ici si j'ai d'autres questions sur la mise au point
    Encore merci et bonne journée.
    Il y a 10 types de personnes dans le monde : ceux qui comptent en binaire et les autres.

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Cependant mon sous formulaire (frmRDVClient_AnimalRDV_sub) est un formulaire continu (affichant la liste de tout les enregistrements)

    Donc ma bidouille fonctionne d'un point de vue fonctionnel mais en fonction de l'enregistrement sélectionné, l'ensemble des listes déroulantes contrôlant id_animal affichent la même chose.
    Une proposition décrite ici : http://claudeleloup.developpez.com/t...s7jours/#LVIII
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Oui c'est dommage et c'est une limitation agaçante.

    Une autre astuce que j'utilise (mais inadaptée à ton cas) c'est d'ajouter une information à la sélection qui signale que ce choix ne doit pas être fait sans pour autant l'interdire.

    Par exemple j'ai un notion de groupe d'affectation pour mes équipes de travail et certains groupes "disparaissent" donc dans le libellé j'affiche "(Inactif)".
    La données reste visible mais l'utilisateur voit qu'l ne faut plus s'en servir.
    De plus j'ai un historique donc les données doivent rester dans la BD même si elles ne servent plus maintenant.
    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 régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Points : 107
    Points
    107
    Par défaut
    Bonjour,


    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour,



    Une proposition décrite ici : http://claudeleloup.developpez.com/t...s7jours/#LVIII

    J'avais quelque chose de ce style en tête (1 textbox et 1 combobox superposés) mais je butais sur le comment...

    Merci beaucoup à vous 2, je teste ça dès ce soir et voit avec l'utilisatrice finale ce qui convient le mieux !


    Citation Envoyé par marot_r Voir le message
    Oui c'est dommage et c'est une limitation agaçante.
    Oui, je suis d'accord avec vous, Access a parfois des côtés agaçants...

    Citation Envoyé par marot_r Voir le message
    Une autre astuce que j'utilise (mais inadaptée à ton cas) c'est d'ajouter une information à la sélection qui signale que ce choix ne doit pas être fait sans pour autant l'interdire.

    Par exemple j'ai un notion de groupe d'affectation pour mes équipes de travail et certains groupes "disparaissent" donc dans le libellé j'affiche "(Inactif)".
    La données reste visible mais l'utilisateur voit qu'l ne faut plus s'en servir.
    De plus j'ai un historique donc les données doivent rester dans la BD même si elles ne servent plus maintenant.

    Vous voulez dire que les données sont là mais plus le combobox qui permet de sélectionner?
    Ou plutôt que c'est permis mais l'utilisateur voit de façon graphique qu'il ne doit pas s'en servir (connaissant ma femme si c'est quelque chose comme ça, elle mettra ses mains pleines de doigts dessus)?


    Je suis désolé je ne suis pas sur d'avoir tout saisi, avez vous un exemple plus graphique?
    Votre astuce m'intéresse, ce qui est inadapté à mon présent cas peut être adapté à mon futur cas
    Il y a 10 types de personnes dans le monde : ceux qui comptent en binaire et les autres.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Vous voulez dire que les données sont là mais plus le combobox qui permet de sélectionner?
    Ou plutôt que c'est permis mais l'utilisateur voit de façon graphique qu'il ne doit pas s'en servir (connaissant ma femme si c'est quelque chose comme ça, elle mettra ses mains pleines de doigts dessus)?
    C'est la 2ième solution.

    ici un exemple

    Données :
    Groupe1, Actif
    Groupe2, Actif
    Groupe3, Inactif

    Affichage :
    Groupe1
    Groupe2
    Groupe3 (Inactif)

    Le groupe 3 est là mais l'utilisateur "voit" qu'il ne faut pas l'utiliser.
    On pourrait mettre un truc du genre :

    Groupe3 (Touche pas chérie !)

    pour être plus explicite :-).
    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.

  8. #8
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Points : 107
    Points
    107
    Par défaut
    Bonsoir,

    Citation Envoyé par marot_r Voir le message
    On pourrait mettre un truc du genre :

    Groupe3 (Touche pas chérie !)

    pour être plus explicite :-).
    Pas sur que ce soit plus efficace avec elle, je dois absolument tout verrouiller...
    Hahaha


    Je note l'astuce, ça pourrait me servir au cas où je développe quelque chose pour mon collègue & moi .

    Merci.

    Après tests, je pense que je vais retenir le cbo faisant la largeur du petit sélecteur et un textbox à côté renvoyant les données concernés.


    Pour les personnes qui reliront ce post :
    Le cbo reste le même mais en taille réduite, cependant 2 champs type textbox ont été ajoutés pour la sélection de l'animal et 2 autres pour le type de forfait.
    Le premier sert à récupérer le nom de l'animal.
    Nom : Capture.JPG
Affichages : 344
Taille : 68,0 Ko
    Voici le contenu de source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz(RechDom("[nom_animal]";"tblAnimal";"[id_type_animal]=" & [cboIDTypeAnimal] & " AND [id_race]=" & [cboIDRace] & " AND [id_animal]=" & [cboIDAnimal]);"Introuvable")
    Le second sert à écrire Nouveau si il trouve #Erreur (c'est le cas sur la dernière ligne correspondant à l'emplacement de saisi d'un enregistrement).
    J'ai du couper en deux la formule parce que l'expression était trop longue pour être entièrement ajoutée dans la source...
    Nom : Capture.JPG
Affichages : 354
Taille : 55,4 Ko
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(IsError([txtNomAnimal]);"Nouveau";[txtNomAnimal])
    J'ai aussi ajouté l'ouverture de la liste déroulante quand on sélectionne le textbox correspondant à la liste...
    Voici l'exemple sur le textbox du choix d'animal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub txtNomAnimal_Aff_Click()
        With Me
            .cboIDAnimal.SetFocus
            .cboIDAnimal.Dropdown
        End With
    End Sub
    Après il ne reste plus qu'à gérer les mise à jour de façon intelligente en fonction des évènements pour éviter de faire clignoter le tout de partout...

    Voilà le résultat, on y voit presque que du feu !
    Nom : Sans titre.png
Affichages : 356
Taille : 81,0 Ko
    On voit juste que la liste déroulante est en décalé, après on pourrais essayer de jouer sur sa largeur à son ouverture mais bon c'est pour un salon de toilettage, pas pour faire décoller Ariane...

    Encore merci à vous deux pour votre aide précieuse.
    Il y a 10 types de personnes dans le monde : ceux qui comptent en binaire et les autres.

  9. #9
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Merci d'avoir poster le détail de ta solution.

    Et je note l'idée de la liste déroulante "à droite" à laquelle je n'avais jamais pensée.

    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.

  10. #10
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Automaticien

    Informations forums :
    Inscription : Décembre 2015
    Messages : 84
    Points : 107
    Points
    107
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Merci d'avoir poster le détail de ta solution.
    Bonsoir,

    Quand je relis des sujets, il n'y a rien de plus agaçant (selon moi) que de lire un fil de discussion qui se termine sur un "C'est bon j'ai trouvé, merci !" sans aucune explications...

    A plus
    Il y a 10 types de personnes dans le monde : ceux qui comptent en binaire et les autres.

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

Discussions similaires

  1. VBA : Source contrôle formulaire
    Par Zartak dans le forum VBA Access
    Réponses: 6
    Dernier message: 14/05/2007, 10h49
  2. Réponses: 13
    Dernier message: 11/05/2007, 14h30
  3. Réponses: 2
    Dernier message: 25/04/2007, 12h11

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