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 :

Actualisation de Liste et Zone de texte [AC-2003]


Sujet :

IHM

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut Actualisation de Liste et Zone de texte
    Bonjour,
    Dans les deux tests zippés, je recherche le moyen d'actualiser le champ couleur.

    "bd_liste&texte" : le champ couleur s'actualise en fonction du choix fait dans la liste (la couleur est affichée dans la colonne 3 de la liste).
    "bd_liste&liste" : la liste des couleurs s'actualise en fonction du choix fait dans la liste animal.

    J'ai essayé sans succès plusieurs solutions évoqués dans les discussions.
    Alain
    Fichiers attachés Fichiers attachés

  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
    Bonjour,

    Pour bd_liste&texte :

    Dans l'événement "Sur changement" de la zone de liste modifiable animal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub animal_Change()
    Me.couleur = Me.animal.Column(2)
    End Sub
    Chaque fois que la sélection est changée, on recopie la couleur (3e colonne) dans la zone de texte couleur.

    Pour bd_liste&liste :
    On peut appliquer le même principe.

    Au niveau de la zone de liste modifiable couleur :
    Contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT T_Animal.numCouleur, T_Animal.idAnimal, T_Race.libRace FROM T_Animal LEFT JOIN T_Race ON T_Animal.numRace=T_Race.idRace ORDER BY T_Race.libRace;
    Colonne liée : 1
    Largeur colonnes : 1,503cm;1cm;2cm
    Largeur liste : 5cm

    Je dirai que la zone de liste modifiable couleur n'a pas grand intérêt puisqu'il n'y a qu'une couleur par idAnimal.
    A moins que tu ne veuilles pouvoir choisir une couleur parmis les idAnimal d'une même race.

    A+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonjour,
    Pour bd_liste&texte :
    Dans l'événement "Sur changement" de la zone de liste modifiable animal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub animal_Change()
    Me.couleur = Me.animal.Column(2)
    End Sub
    Cette proposition est OK

    Pour bd_liste&liste :
    On peut appliquer le même principe.
    j'ai raté un p'tit truc...
    En pièce jointe une nouvelle base pour illustrer ma demande.
    Pour ce deuxième sujet je n'avais pas donné assez d'explication.

    La table T_Race est le résultat figé des couples Animal+Couleur. La table est préalablement renseignée, puis utilisée dans le formulaire F_Ferme.
    L'utilisateur sélectionne un animal, sur changement la liste choix couleur s'actualise.
    L'utilisateur ne peut alors choisir QUE la couleur (ou les couleurs) disponibles du couple Animal+Couleur de la table T_Race.

    Un dernier petit coup de pouce, et hop, c'est fini !
    Alain
    Fichiers attachés Fichiers attachés

  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
    Bonsoir,

    Le formulaire ne permet d'entrer des données à cause de la requête source.

    J'ai enlevé les relations entre les tables et modifié T_Ferme pour qu'elle ressemble à ton premier post :
    T_Ferme (idFerme, quantite, numAnimal, numCouleur).
    Ensuite j'ai choisi T_Ferme comme source du formulaire F_Ferme.

    Formulaire
    Evénement "Sur activation"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
        Me.couleur.Requery
    End Sub
    Zone de liste modifiable animal
    source contrôle : numAnimal
    Contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT idAnimal, libAnimal FROM T_Animal ORDER BY libAnimal;
    Evénement "Sur changement"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub animal_Change()
        Me.couleur.Requery
    End Sub
    Zone de liste modifiable couleur
    source contrôle : numCouleur
    Contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT T_Couleur.idCouleur, T_Couleur.libCouleur, T_Race.numAnimal FROM T_Couleur INNER JOIN T_Race ON T_Couleur.idCouleur=T_Race.numCouleur WHERE (((T_Race.numAnimal)=[animal]));
    Et là tu constates le problème sur lequel tout le monde tombe, avec un formulaire en mode continu :
    Quand tu changes d'enregistrement, il y en a certains pour lesquels la zone de liste modifiable couleur devient vide.

    C'est parce qu'Access ne gère qu'une seule et unique zone de liste modifiable couleur pour tout le formulaire.
    Il n'y en a pas une distincte par enregistrement.
    Donc à chaque fois qu'on fait un Requery et qu'on filtre la liste (Where dans la requête de la propriété contnu) ,
    il y des enregistrement qui ont une donnée sans correspondance dans la liste.
    Cela se traduit par l'affichage d'un vide.

    Donc il n'est pas bon de filtrer une liste par rapport à une autre, dans un formulaire en mode continu.


    En bidouillant on y arrive quand même ...
    J'ai copié F_Ferme en F_Ferme2

    Zone de liste modifiable couleur
    Contenu : j'ai enlevé la clause Where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT T_Couleur.idCouleur, T_Couleur.libCouleur FROM T_Couleur
    J'ai copié/collé le contrôle couleur en cboChoixCouleur.
    Pour ce dernier j'ai remis la clause Where.

    J'ai donc deux zones de liste modifiables ayant le même contrôle source mais un code SQL différent pour le contenu.

    Je superpose exactement cboChoixCouleur à couleur
    Je mets cboChoixCouleur en arrière plan.
    Elle sera donc masquée par couleur

    Dans l'événement "réception de focus" de couleur je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub couleur_GotFocus()
        Me.cboChoixCouleur.SetFocus
    End Sub
    La conséquence est que cboChoixCouleur passe au premier plan, mais uniquement pour l'enregistrement actif.

    Pour les événements "sur activation" du formulaire et "sur changement" de animal je mets repectivement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Current()
        Me.cboChoixCouleur.Requery
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub animal_Change()
        Me.cboChoixCouleur.Requery
    End Sub
    Dernière petite touche.
    Je crée une zone de liste modifiable cboDummy dont la largeur est égale à celle du bouton (la flèche) servant à ouvrir la liste.
    Je superpose exactement cboDummy au dessus du bouton de la liste couleur.
    Je mets cboDummy premier plan.
    Du premier plan vers le dernier plan on a dans l'order
    cboDummy, couleur, et enfin cboChoixCouleur.

    Enfin dans l'événement "sur réception focus" de cboDummy je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cboDummy_GotFocus()
        Me.cboChoixCouleur.SetFocus
        Me.cboChoixCouleur.Dropdown
    End Sub
    Voila. Si les superpositions sont précises, on n'y voit que du feu.
    J'ai juste mis la couleur de fond de cboChoixCouleur en jaune pour vérifier que c'était bien elle qui passait au premier plan.


    A+
    Fichiers attachés Fichiers attachés

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    315
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 315
    Points : 243
    Points
    243
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonsoir,
    Le formulaire ne permet d'entrer des données à cause de la requête source.
    (...)
    Voila. Si les superpositions sont précises, on n'y voit que du feu.
    J'ai juste mis la couleur de fond de cboChoixCouleur en jaune pour vérifier que c'était bien elle qui passait au premier plan.
    A+
    Bonjour,
    Merci (tardif) pour cette longue réponse.
    La solution est séduisante, mais j'ai du mal à la mettre en pratique.
    Je note quand même qu'il y a toujours un bout de code pour traiter un sujet. Mon besoin a évolué, pour le traiter, je vais réutiliser une partie de la solution.
    Cordialement
    Alain

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

Discussions similaires

  1. Enregistrement et restitution liste dans zone de texte
    Par scrouet dans le forum Langage
    Réponses: 2
    Dernier message: 22/10/2008, 09h16
  2. Zone de liste et zone de texte liées
    Par bb62 dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 21/07/2006, 14h10
  3. Formulaire avec liste et zone de texte : pb de sélection
    Par oceanediana dans le forum Access
    Réponses: 6
    Dernier message: 19/07/2006, 14h49
  4. Liste déroulante + zone de texte
    Par Alexy3171 dans le forum Access
    Réponses: 9
    Dernier message: 13/07/2006, 12h41
  5. liste déroulante + zone de texte
    Par Le Rebel dans le forum Langage
    Réponses: 5
    Dernier message: 31/01/2006, 10h55

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