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 :

[Access] Formulaire avec deux listes synchro mettant à jour un sous-formulaire


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 7
    Points : 8
    Points
    8
    Par défaut [Access] Formulaire avec deux listes synchro mettant à jour un sous-formulaire
    Bonjour à tous !

    Je me permets de poster sur ce forum qui m'a déjà bien aidé au sujet d'un autre souci que je rencontre avec une base de données.

    Tout d'abord je précise que je travaille sous Access.

    Pour contexte, cette base regroupe des données sur des observations d'oiseaux : espèces observées, lieu, identité des observateurs... Ma base est bien fonctionnelle, en voici le modèle pour les plus curieux :
    Nom : MPD.png
Affichages : 487
Taille : 18,7 Ko

    Une image valant mille mot, voilà un schéma de la situation qui me pose problème au niveau d'un formulaire :
    Nom : situation_formulaire.png
Affichages : 370
Taille : 14,5 Ko

    Comme vous le voyez je souhaite réaliser un formulaire permettant à un utilisateur d'effectuer des recherches sur les données de la base. Spécifiquement, mon idée est de permettre à l'utilisateur de sélectionner une espèce soit par son nom vernaculaire, soit par son nom scientifique dans l'une ou l'autre des listes déroulantes. Je souhaiterais que si un nom est sélectionné dans une liste, le nom correspondant s'affiche automatiquement dans l'autre et ce dans les deux sens. En même temps, je souhaiterais que le sous-formulaire intégrée se mette à jour afin d'afficher les enregistrements concernant l'espèce choisie (typiquement des données concernant l'observateur, le lieu d'observation...), une espèce pouvant faire l'objet de plusieurs observations donc plusieurs enregistrements.

    Le sous-formulaire fonctionne parfaitement avec une seule liste déroulante (ce sous-formulaire étant basé sur une requête créée préalablement). En revanche les choses se corsent quand j'essaie d'ajouter l'autre liste ! Globalement tout fout le camp.

    Tout d'abord, est-ce que ce genre de choses en possible ? J'ai trouvé plusieurs situations sur le net de listes synchronisées mais à priori pas de cas où ces listes sont utilisées en entrée d'un sous-formulaire.

    Si oui, pourriez-vous m'aiguiller sur la démarche à adopter ? Dois-je d'abord effectuer la synchronisation entre les deux listes et ensuite avec le sous-formulaire ou d'abord lier une liste au sous-formulaire puis y joindre la deuxième liste ?

    J'avoue avoir galéré pendant plusieurs heures sur la question ; mon niveau débutant me limitant quelque peu pour élucider la situation. J'ai cru comprendre qu'on pouvait mettre à jour une liste après avoir sélectionné un item dans une autre à renfort de VBA, cela semble-t-il jouable ici pour une synchronisation dans les deux sens ?

    Dans le même ordre d'idée, si cela est possible je souhaiterais utiliser les listes des noms d'espèce afin de compléter dans le formulaire des champs de manière automatique (par exemple quand une espèce est sélectionnée, un champ "famille" se remplit automatiquement par la famille de l'espère). Là encore je ne sais pas si une telle chose est possible avec deux listes synchronisées ?

    Merci par avance à ceux qui prendront de leur temps pour m'aider à y voir plus clair. N'hésitez pas à me demander des précisions si la question vous semble floue ou sur la nature des différentes tables et champs par exemple.

    Bonne soirée !

  2. #2
    Modérateur

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

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

    C'est sans doute faisable avec un peu de VBA mais je te suggère l'astuce suivante : un seule liste qui présente le nom vernaculaire ET le nom scientifique comme cela tu n'as qu'une seule zone à géré.

    Tu liste est composée comme suit :

    reqNomVernaculaire
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select ClefOiseau, NomVernaculaire as Nom from tblOiseau

    reqNomScientifique
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select ClefOiseau, NomScientifique as Nom from tblOiseau

    reqNom
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select * from reqNomVernaculaire
    union all select * from reqNomScientifique
    order by Nom

    Et tu utilises reqNom comme source de ta liste.
    Le lien avec le sous-formulaire sur fait sur ClefOiseau.
    Les informations sur le nom vernaculaire ou le nom scientifique sont affichées dans la fiche de l'oiseau.

    Si tu tiens à tes 2 liste, je te suggère l'astuce suivante :
    Définir une liste "maitresse" qui servira en réalité à faire la liaison avec ton sous-formulaire.
    Je vais supposé que c'est la liste scientifique.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select ClefOiseau, NomScientifique, NomVernaculaire from tblOiseau

    Définir une liste "synonyme" qui va mettre à jour la liste maitresse.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select ClefOiseau, NomVernaculaire, NomScientifique from tblOiseau

    Sur MAJ de listeSynonyme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.ListeMaitresse=me.ListeSynonyme.column(2)
    Sur MAJ de listeMaitresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.ListeSynonyme=me.ListeMaitresse.column(2)
    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
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 291
    Points : 39 552
    Points
    39 552
    Billets dans le blog
    9
    Par défaut
    Attention il n'y a pas bijection entre nom scientique et nom français

    Par exemple :
    Hydrobates pelagicus correspond à la fois à Pétrel tempête ET à Océanite tempête selon les litératures
    Picus viridis correspond au Pic Vert, que certains appellent pivert

    De plus, le nom "vernaculaire" peut aussi bien être le nom français, que tout autre nom local (régional par exemple)

    Vous pouvez bien sur restreindre à un seul nom vernaculaire par nom latin dans votre base de données

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/01/2015, 10h14
  2. Réponses: 2
    Dernier message: 14/03/2012, 13h32
  3. [1.x] pb sur formulaire avec deux listes (sfWidgetFormDoctrineChoice)
    Par seveinfo dans le forum Symfony
    Réponses: 0
    Dernier message: 11/09/2011, 11h32
  4. Réponses: 8
    Dernier message: 03/08/2008, 14h59
  5. [AJAX] Formulaire avec deux listes dynamiques liées
    Par gotcha5832 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/03/2007, 10h40

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