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

Access Discussion :

Récupérer information d'un formulaire [AC-2016]


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Récupérer information d'un formulaire
    Bonjour à tou(te)s,

    Je viens de créer un formulaire sous Access 2016.
    Ce formulaire affiche des informations de contact (genre un carnet d'adresse).
    Dans ce formulaire j'ai deux onglets "Fiche contact" et "Soins faits"

    J'ai une table "Contact", une table "Soins_faits" et une table "Soins_details". La table "Contact" reprenant les informations liées au contact tandis que la table "Soins_faits" se rempli des soins réalisés sur le contact via un bouton "ajouter" qui récupère le soin dans un menu déroulant (voir formulaire) la table "Soins_details" a été remplie par mes soins avec les informations sur le type de soin du genre "Coupe à sec" ou "Mise en plis long" etc.

    Dans l'onglet "Fiche contact", les champs se remplissent via la table "Contacts " (on retrouve notamment, le nom, le prénom, la date de naissance etc.).

    J'aimerais lorsque je clique sur le deuxième onglet "Soins_faits", récupérer la liste des soins effectués et liés au Contact.

    Actuellement j'ai créé un état qui affiche malheureusement la liste complète des enregistrements de la table "Soins_faits". J'aimerais limiter l'affichage au contact désiré.

    Donc en résumé dans l'onglet "Fiche contact" je peux naviguer entre les enregistrements de la table "Contact" et via un bouton "Ajouter" et un menu déroulant contenant la liste des soins, ajouter au contact les soins effectués.

    Cependant quand je passe sur l'onglet "Soins faits", je me retrouve avec tous les soins de la table "Soins_faits" au lieu de n'avoir que ceux du Contact dont la fiche est active à l'écran.

    La structure des tables est la suivante. La table "Contact" est liée à la table "Soins_faits" avec une clé étrangère "ID_Contact" dans la table "Soins_faits" autrement dit, lorsqu'un enregistrement est fait dans la table "Soins_faits", la ligne contient l'ID du contact qui a reçu ce soin.

    J'espère avoir été clair.

    Si quelqu'un pouvait m'aider à finaliser et à obtenir dans l'onglet "Soins faits", les informations contenues dans la table "Soins_faits" mais uniquement pour le contact correspondant.

    Je joins des captures d'écrans pour aider à visualiser.

    Merci d'avancez à tou(te)s pour vos démarches.

    A bientôt.
    Images attachées Images attachées       

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

    Il y a une reponse facile qui n'utilise pas un etat mais un sous-formulaire
    et une plus complexe qui repond a ta question.

    Laquelle veux-tu ?

    A quel point es-tu a l'aise avec VBA ?

    1. VBA c'est quoi ?
    2. J'ai de vague notion.
    3. Pas de probleme, je code en VBA depuis des annees
    4. Autre


    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci d'abord pour ta réponse
    Ensuite je suis preneur des deux solutions
    Pour VBA je dirais que j'ai des notions
    Merci encore

  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
    Ok, la solution facile n'utilise pas de VBA, seulement des controles standard d'Access et l'assistant.

    1. Dans ton onglet "Soins Faits", supprime le rapport que tu as mis.
    2. Ensuite dans les controles disponibles pour la conception d'un formulaire, choisi sous-formulaire et glisse le la ou etait ton rapport et suis l'assistant.
    3. A un moment il va te demander quels sont les champs qui font la lisaion entre ton formulaire et le sous-formulaire.
    4. La tu vas choisir celui qui identifie ton contact dans le formulaire et le sous-formulaire.
    5. Continue jusqu'a la fin.


    Et voila tu as un sous-formulaire dependant, si tu changes de contact, tes donnees changent.

    La solution plus compliquee maintenant.

    D'abord il faut savoir que les etats/rapport ne sont en principe pas destines a afficher des donnees dans un formulaire, ils servent habituellement a voir des donnees avant leur impression.
    Ce ne sont donc pas des objets "dynamiques" mais des images du moment ou tu les ouvres pour les regarder.
    Tu peux faire toutes les modifications que tu veux a tes donnees apres l'ouverture du le rapport il ne sera pas modifier.

    Donc il va falloir faire 2 chose, rendre les rapports sensible aux "parametres".
    S'assurer qu'il affiche les derniere donnees.

    Pour rendre un rapport sensible au parameter, generalement on passe un critere de selection au moment ou on demande l'ouverture du rapport.
    Mais cela ne s'applique pas a ton cas car il est deja "ouvert".

    Dans ces circonstances, il faut passer le parametre a la source du rapport en modifiant la requete qui l'alimente.
    Il faut mettre quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Forms]![TonFormPrincipalContact]![TonIdentifiantContact]
    Dans la colonne des donnees qui correspond a l'identifiant Contact dans tes soins.
    Pas de code VBA, juste taper le critere dans la ligne des criteres.

    Pour info, Access va traduire Forms en francais et Forms est la liste des formulaires actuellement ouverts.
    Ce que tu dis a Access avec cela c'est : "He regarde donc le contact qui est actuellement selectionne et ne prend que ses donnees.".
    C'est super pratique comme truc et on s'en sert regulierement pour n'afficher que les donnees qui interessent l'utilisateur presentement.

    Apres il va falloir ruser.

    Dans le code de la procedure evenementielle associee l'evenement "Sur Clic" de l'onglet des soins, tu vas mettre :
    Dans le code de la procedure evenementielle associee l'evenement "Sur activation" du formulaire, tu vas mettre :
    Et dans le module tu va taper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub MAJSousRapport()
       me.NomTonSousRapport.SourceObject=me.NomTonSousRapport.SourceObject 'Force Access a recharger l'objet
    end sub
    Comme tu vois c'est pas mal plus complique que de definir les parametres de liaison.

    A+

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Merci !!!
    @marot_r

    Et bien merci !!

    La solution facile a fait le job.

    Je vais me pencher sur la solution VBA pour y voir plus clair.
    Je te souhaite une excellente soirée.
    Cemal

  6. #6
    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
    Et j'ai oublie.

    Quand tu fais une jointure entre deux champs tu n'as pas besoin de preciser l'egalite des champs dans les criteres car c'est implicite.

    A+

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

Discussions similaires

  1. récupérer les informations d'un formulaire
    Par logtt12 dans le forum Langage
    Réponses: 6
    Dernier message: 18/01/2011, 13h05
  2. Réponses: 27
    Dernier message: 20/01/2010, 11h39
  3. Réponses: 2
    Dernier message: 12/06/2008, 10h48
  4. récupérer les informations à partir du formulaire
    Par gentil dans le forum Struts 1
    Réponses: 16
    Dernier message: 30/03/2007, 14h17
  5. Réponses: 4
    Dernier message: 01/08/2006, 12h31

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