Gérer les sous feuilles de données

Bonjour,

j'ai de nouveau besoin d'aide....

Actuellement ma table « T_residence » me propose en sous feuille de données, les différents types de financement, qui me donnent les différentes activités de chaque type de financement, etc…

J’aimerais aussi, que ma table « T_residence » me propose en sous feuilles de données, les différents logements(tels logements appartiennent à telle résidence).

Quand je créé une relation entre ma table « T_logements » et « T_residence »,en retournant sur ma table « T_residence », et en cliquant sur le petit « + », j’ai une fenêtre qui s’ouvre qui me demande de choisir la sous feuille de données que je veux.

Mais j’aimerais avoir les deux .

Est-ce que la piste à explorer serait celle de la création d’une table de liens ?

Si oui, ce qu’on appelle des clés étrangères, doivent elles formatées en « numeroauto » ou faut il leur attribuer un autre type de format de données ?

33 réponses

Résumé de la discussion

L’utilisateur cherche à afficher, pour chaque résidence, deux sous-feuilles liées: les logements et les différents types de financement, et se demande si une table de liens est nécessaire et quel type de clé étrangère utiliser. Les échanges rappellent que les relations jouent un rôle central dans la manière dont les données sont combinées dans les requêtes, formulaires et rapports, et qu’on peut y associer des contraintes pour assurer l’intégrité des liens. La table de liens est pertinente principalement pour les relations plusieurs-à-plusieurs; pour une relation un-à-plusieurs (résidence vers logements), une clé étrangère dans T_logements référant T_residence suffit, et les clés étrangères doivent suivre le même type que la clé primaire référencée (AutoNumber => Long Integer). Les discussions couvrent également les aspects liés aux contraintes, aux jointures et à l’usage des requêtes, sans fournir une solution unique et détaillée pour l’implantation exacte des deux sous-feuilles dans une vue datasheet.

Bobot (l’IA à votre service)
  1. Contributeur

    mettre en place une fonctionnalité pour savoir qui a saisi de l'information dans le formulaire. J'ai mis en place un formulaire d'identification. J'aimerais qu'une fois que la personne s'identifie, je puisse savoir qu'elle a ajouté de l'info.

    Cela pourrait être l'occasion de commencer à utiliser du VBA, et je ne pense pas que ce soit une bonne idée, tu as assez à apprendre pour le moment.

    Je ferais ainsi:

    • créer une table, "journal", avec, par exemple, des champs moment, personne, commentaire.  Le champ moment pourrait être, par défaut, mis à "maintenant".
    • laisser le formulaire d'identification ouvert pendant le reste du travail, ce qui permet d'utiliser, à tout moment, son contenu
    • tu pourras ensuite, dans une macro, faire appel à une requête d'ajout qui crée un enregistrement dans la table journal
    0
    1. OK, je verrais cela plus tard. Merci

      0
    2. Je peux créer des doublons dans mon sous formulaire F_personne.

      J'ai regardé ma table, il y a bien la propriété "indexé", "oui, sans doublon".

      Comment je peux faire pour empêcher la création de doublon?

      0
    3. Contributeur
      @badarledur

      Tu dois d'abord définir ce qu'est un "doublon".

      Dans la table, pour quel champ ou quelle combinaison de champs vois-tu "sans doublon"?

      0
    4. @yg_be

      Oui c'est vrai. Je le vois sur "id_personne", ici le doublon serait la personne qui a le même prenom, nom et date de naissance. (il peut peut-être exister, un homonyme né le même jour, mais dans ma situation ce serait du jamais vu)

      0
    5. Contributeur
      @badarledur

      Tu dois alors créer un index "sans doublon" sur la combinaison des trois champs.

      0
  2. Contributeur

    "travailler à plusieurs simultanément sur un fichier access": cela dépend de l'environnement, de comment le fichier est partagé et accessible.

    0
    1. Contributeur

      Concernant le contrôle filtre "date intervention".

      Je ne comprends pas ce que tu veux obtenir via l'évènement au clic,.

      Pour l'évenement après MAJ, il me semble qu'il manque une action importante que tu fais pour les autres contrôles filtres.

      0
      1. Je travaille sur un formulaire F_ajouter_personne.

        En effet, quand je veux ajouter une séance d'animation, une information demandée est l'intervenant.

        Les intervenants qui vont être proposés dans li liste déroulante  du formuilaire F_ajouter_seances doivent avoir été créés au préalable avec le formulaire F_ajouter_intervenant.

        Mais dans le formulaire F_ajouter_intervenant, les choix qui vont être proposés dans les listes déroulantes pour ajouter un  intervenant vont dépendre de leur existence dans la Table T_personne.

        Il me faut donc que je puisse donner le moyen de créer une personne.

        Ma question est la suivante : dans ce formulaire ajouter_personne qui comme sur le modèle des autres formulaires d'ajout, aura une partie pour renseigner de l'information. Informations qui seront ajoutées au sous formulaire F_personne. Concernant les choix à faire sur : la civilité et la catégorie de personne, est ce que je peux définir moi même le contenu des listes déroulantes? Pour civilité "Monsieur, Madame". Pour catégorie de la personne "Résidents, Personnel, Partenaire, Prestataire, etc...) ou bien je dois absolument passer par une requête pour définir le contenu de la liste déroulante.

        Car je n'ai nul part actuellement où aller chercher ces infos via des requêtes.

        Si je fais une requête basée sur la catégorie de la personne, pour le moment, seules les catégories déjà créés sont proposées.

        0
      2. @badarledur

        Et aussi, pourquoi dans mon formulaire F_ajouter_personne, quand j'essaie d'ajouter les informations renseignées, les informations sont ajoutées à la Table T_personne mais pas au sous_formulaire F_personne ?

        (je n'ai ajouté que les champs civilité, nom et prenom à ma requête "add_personne", pour essayer)

        https://www.cjoint.com/c/MLgiuTqwENv

        0
      3. Contributeur
        @badarledur

        Pour les listes déroulantes de civilité et de catégorie, je pense à trois façons de faire:

        1. mettre les choix possibles dans la définition de la liste "définir moi même le contenu des listes déroulantes"
        2. mettre ces choix dans une ou plusieurs tables.  Soit une table civilités et une table catégories, ou une seule table avec deux champs, le nom de la liste et le choix possible
        3. utiliser des id, comme tu fais, par exemple, pour les résidences

        Si tu utilises ces listes déroulantes à plusieurs endroits, l'avantage du 2 sur le 1, c'est qu'il ne faut changer à un seul endroit.

        Le 3 est plus lourd, et permet de changer les noms des enregistrements existants.  Par exemple, si on décide de dire "monseigneur" au lieu de "monsieur".  Le choix 3 est parfois aussi intéressant pour des raisons de performance.

        Dans ton cas, pour ces deux listes, j'utiliserais la solution 1.

        Parfois, au lieu de liste, il est préférable d'utiliser des champs oui/non.  Je ne pense pas que cela s'applique ici.

        Un champ oui/non pour décider si monsieur ou madame.

        Des champs oui/non pour chaque catégorie de personne.  Cela permet, alors, qu'une personne soit dans plusieurs catégories.

        0
      4. Contributeur
        @badarledur

        pourquoi une personne ajoutée n'apparait pas dans le sous_formulaire F_personne.

        Quelle est la source de ce sous-formulaire?  La personne ajoutée apparait-elle dans cette source?

        0
      5. @yg_be

        Réponse au #441

        La source du sous-formulaire est R_personne. Non cela n'ajoute pas la personne ajoutée ni à la requête ni au sous formulaire

        0
    2. Contributeur

      Concernant formulaire consultation et gestion des participations et de mes requêtes R_seances et R_recherche_seance

      Les requêtes me semblent parfaites.

      A propos des contrôles filtres du formulaire (en bleu):

      Les listes déroulantes proposent des choix qui ne correspondent à aucune séance.  C'est surtout visible pour le filtre sur les activités.

      Tu pourrais, pour des raisons de convivialité, éviter cela en allant chercher les données pour les filtres dans la requête R_seances.  Tu devras sans doute alors utiliser DISTINCT dans les requêtes sources des filtres, pour éviter les doublons dans les listes déroulantes.

      (Je regarderai plus tard le contrôle filtre "date intervention")

      0
      1. J'ai appliqué ce que tu m'as proposé. En effet c'est mieux !

        mes contrôles filtres ne proposent que l'existant.

        https://www.cjoint.com/c/MLffT1kptnE

        0
      2. Contributeur
        @badarledur

        Tu n'as pas assez de données (séances) pour t'en rendre compte, mais il peut y avoir des doublons dans tes listes déroulantes filtres de financement et d'activités.

        Je m'étonne de la présence de la table d'activité dans la source de la liste déroulante filtre pour les activités.

        0
      3. @yg_be

        oui tu as raison, j'ai essayé d'ajouter des séances identiques et effectivement mes listes déroulantes me proposaient plusieurs fois la même valeur. J'ai ajouté "Distinct" à toutes mes requêtes sources des contrôles filtre. Maintenant cela fonctionne.Merci

        J'ai oublié de retirer la table activités dans la liste déroulante filtre pour les activités.

        Pour le contrôle filtre "date d'intervention", merci, j'oubliais de réexécuter la requête.

        je suis bien maintenant ?: https://www.cjoint.com/c/MLfh43zrbaE

        0
      4. Contributeur
        @badarledur

        Je pense que le formulaire est très bien, certainement assez bien que pour être utilisé, et puis voir les améliorations que demanderont les utilisateurs.

        0
      5. @yg_be

        super merci!

        0
    3. Contributeur

      Tu me demandais mon avis sur les requêtes associées à des contrôles dans le formulaire F_intervenants.

      Je ne comprenais pas pourquoi tu avais créé des listes déroulantes basées sur des requêtes pour simplement afficher des informations, pour des contrôles d'affichage, des contrôles qui ne sont destinés qu'à montrer de l'information, pas à permettre de faire des choix ou de modifier des données.

      J'avais été étonné par la même anomalie dans le formulaire F_participations.

      Tu m'expliques que tu as simplement laissé Access créer automatiquement ces listes déroulantes, et que Access a fait cela en s'inspirant de la définition du champ dans la table. 

      Si cela fonctionne, tant mieux.  En général, je préfère ne pas laisser Access prendre trop d'initiatives, et maitriser chacun des éléments.

      Je laisserais donc tel quel ce qui a été construit et qui fonctionne.

      Pour de nouvelles tables, j'éviterais d'associer des listes déroulantes à des champs, sauf si nécessaire.  Il est plus propre de créer une requête qui sera utilisée pour afficher clairement les informations.  Et d'utiliser un formulaire d'ajout avec bien plus de possibilités qu'une liste déroulante dans une table.

      Pour de nouveaux formulaires, j'éiterais d'automatiquement récupérer des listes déroulantes de tables, mais je compléterais la requête source du formulaire, comme tu as fait pour récupérer des noms dans le formulaire F_consultationSeance_gestionParticipants, via la requête R_recherche_seance.  

      0
      1. Je préfère reprendre proprement avec tes méthodes. Je me dis que ça m'évitera de rencontrer des problèmes plus tard.

        Pour F_participations et F_intervenant, je crois que j'ai compris.

        Mais pour F_ajouter_intervenant. J'ai essayé de créer ma requête qui me servira de source pour mon formulaire.

        On est bien d'accord, une fois ma requête associée comme source du formulaire, l'idée c'est d'associer aux différents contrôles, les sources contrôles correspondantes? Pour mon contrôle(filtre) "résidence, je lui associe le champs "id_residence" de ma requête?

        D'ailleurs pour ce champs, je remarque une anomalie. Si dans ma requête, je choisis de récuperer le nom de la résidence depuis la table T_activités avec le champs "id_residence", pas de problème. En revanche, si je choisis de récuperer le nom de la résidence depuis la table T_residence avec le champs "nom de la résidence", quand je reviens dans mon formulaire et que je teste mon contrôle, la liste déroulante proposée me convertit une des deux résidences en chiffre. L'autre valeur reste du texte. Pourquoi?

        Aussi, si pour ma requête source je pars de ma table intervenant et que j'ajoute toutes les tables à partir desquelles je vais venir ajouter les valeurs qui me seront utiles dans la construction de mon formulaire. Le problème qui se présente à moi est que ma requête ne m'avait m'extraire que les intervenants déjà existants. Alors que l'objectif de mon formulaire est de pouvoir en créer d'autres. J'ai vidé ma table "intervenant" pour essayer et du coup ma requête ne me renvoie plus rien.

        Mais peut être est ce ma requête qui n'est pas correcte :

        SELECT T_intervenants.id_personne, T_intervenants.id_activite, T_personne.categorie_personne, T_personne.Active, T_activites.active, T_activites.id_residence, T_activites.type_financement, [prenom] & "' " & [nom] AS nom_complet
        FROM T_residences INNER JOIN (T_personne INNER JOIN (T_intervenants INNER JOIN T_activites ON T_intervenants.id_activite = T_activites.id_activite) ON T_personne.id_personne = T_intervenants.id_personne) ON T_residences.id_residence = T_activites.id_residence
        WHERE (((T_personne.Active)=Yes) AND ((T_activites.active)=Yes))
        ORDER BY T_personne.nom, T_personne.prenom;
        
        0
      2. Contributeur
        @badarledur

        Les contrôles filtres sont des contrôles indépendants, il ne sont pas issus de la source du formulaire (ils n'ont pas de "source contrôle").  Ils sont d'ailleurs en dehors de la partie du formulaire qui affiche les informations des enregistrements de la source.

        Les contrôles filtres n'ont pas de "source contrôle", et, si ce sont des listes déroulantes, ont comme "contenu" une requête spécifique, totalement indépendante de la requête source du formulaire.

        0
      3. Contributeur
        @badarledur

        Si dans ma requête, je choisis de récuperer le nom de la résidence depuis la table T_activités avec le champs "id_residence", pas de problème.

        Je suppose que Access crée alors automatiquement une liste déroulante basée sur la définition de la table T_activites, et que cela fonctionne bien pour les deux résidences.

        En revanche, si je choisis de récuperer le nom de la résidence depuis la table T_residence avec le champs "nom de la résidence", quand je reviens dans mon formulaire et que je teste mon contrôle, la liste déroulante proposée me convertit une des deux résidences en chiffre. L'autre valeur reste du texte. Pourquoi?

        Access a donc besoin que les jointures de ta requête fonctionnent bien pour retrouver le nom de la résidence.  Si tu ouvres ta requête et que tu regardes ce qu'elle affiche, tu verras sans doute que "nom_residence" est vide pour certains enregistrements.

        0
      4. @yg_be

        réponse au #392

        Dans mon formulaire F_ajouter_seances, j'ai des contrôles filtres mais dont je veux que l'information contenue  soit ajoutée au sous formulaire. 

        ici, comment je dois appréhender la chose? est ce que je peux laisser tel quel? Ou bien, je mets mes contrôles filtres dans la partie "détail du formulaire" et j'ajoute des zones de texte qui renverront les choix effectués dans les filtres? Et ensuite c'est le contenu des zones de texte que j'ajoute au sous formulaire?

        0
      5. @badarledur

        Je reprends le formulaire F_participations pour qu'il n'est plus de liste déroulante proposée automatiquement par access.

        1. j'ai modifié le format de ma table, ce n'est plus une liste déroulante.

        2. j'ai créé une requête "R_participations" qui va me servir comme source du formulaire

        3.J'associe aux contrôles de mon formulaire les champs de ma requête

        4.je veux que le champs id_personne me présente les informations sous la forme "prenom nom".

        Ma requête te semblet-t-elle correcte?

        SELECT T_participations.id_participation, T_participations.id_seance, [prenom] & " " & [nom] AS nom_complet
        FROM T_participations INNER JOIN T_personne ON T_participations.id_personne = T_personne.id_personne
        ORDER BY T_personne.nom, T_personne.prenom, T_personne.id_personne;
        

        EDIT

        en fait je me demande si "id_personne" est nécessaire dans la requête.

        0
    4. Sur mon formulaire consultation seance et gestion participation, j'essaie de construire la partie de gauche.

      Si je comprends bien ta suggestion, la partie de gauche se compose de deux parties:

      - une partie qui me permet de rechercher une séance via des contrôles 

      - une partie qui me permet d'afficher la séance recherchée.

      Là, je suis perdu. Comment je peux afficher une séance recherchée à partir de mes contrôles servant de filtres?

      0
      1. Contributeur

        Pour le moment, la source du formulaire, c'est la table séances.  Ce qui signifie que tu peux te déplacer parmi toutes les séances.

        On peut utiliser plutôt une requête comme source du formulaire.  Cela permet de contrôler parmi quelles séances on peut se déplacer.

        Cette requête peut utiliser les contrôles filtrant du formulaire, comme la requête R_candidats le faisait.

        0
      2. @yg_be

        Ma séance recherchée s affiche dans une zone de liste? Une zone de texte? Un sous formulaire ?

        0
      3. Contributeur
        @badarledur

        Les séances filtrées s'affichent dans le formulaire, on les parcourt via le bouton de navigation en bas à droite.

        0
      4. @yg_be

        Les contrôles permettant le filtrage sont en permanence sur le formulaire? Les enregistrements qu on va pouvoir parcourir vont se réduire au fur et à mesure des sélections effectuées dans les contrôles servant à filtrer?

        0
      5. Contributeur
        @badarledur

        Les contrôles permettant le filtrage sont en permanence sur le formulaire?  Tu veux dire qu'ils ne seront pas affectés par la navigation?  Oui, si il sont indépendants.

        Les enregistrements qu on va pouvoir parcourir vont se réduire au fur et à mesure des sélections effectuées dans les contrôles servant à filtrer?  Oui, c'est l'idée, car les contrôles filtrants vont influencer le comportement de la requête source du formulaire.

        0
    5. Contributeur

      Quand tu comprendras mieux les différentes possibilités offertes par Access, tu pourras mieux imaginer comment organiser au mieux les formulaires au service des utilisateurs.  C'est un travail assez complexe, qui demande de balancer les connaissances techniques (Access) avec les connaissances du "métier" (les résidences, leur organisation, leur personnel, ...), et que tu es le seul à pouvoir faire.

      Tu l'as vu, les macros de Access permettent d'automatiser des actions dans les coulisses des formulaires.

      Il est aussi possible d'écrire du VBA dans Access, et cela offre des possibilités d'automatisation bien plus développées que les macros.

      Cependant, dans Access, il n'est pas possible de générer du code VBA à partir des actions faites par l'utilisateur, comme le permet l'enregistrement de macro de Excel.

      Dans Access, le code VBA doit être écrit "à la main".

      J'ignore si il est nécessaire ou opportun que tu développes, un jour, du VBA dans Access.  Intuitivement, il me semble que tu n'as pas d'expérience de programmation, et que tu as, pour le moment, assez à apprendre sans cela.

      Le jour où tu identifieras quelque chose de très utile qui ne te semble pas possible à réaliser via les macros, ce sera l'occasion de réfléchir à l'utilisation de VBA.

      0
      1. Je suis pour le moment très content que tu me dispenses du VBA.

        quand j'ai un problème, d'une manière générale, avant de te demander, je fais quelques recherches. Je tombe d'ailleurs assez souvent sur le site developper.com.

        Toutes les réponses proposées suggèrent du vba.

        Toi, tu me proposes à chaque fois des solutions sans vba, et j'en suis très satisfait.

        0
      2. Pour mon formulaire consultation séance et gestion des participations, je suis parti d'une copie de mon formulaire d'ajout des activités.

        Forcément, je dois mettre à jour, un bon nombre de paramètres.

        Il me reste deux paramètres à mettre à jour que je ne parviens pas à identifier. (à l'ouverture du formulaire, j'ai deux fenêtres qui s'ouvrent successivement et qui me demandent de préciser les paramètres : "Formulaires!F_ajouter_suivi_activites!endroit" (deux fois).

        Je ne parviens pas à identifier où cela se trouve. Existe-t-il un moyen d'identifier ce paramètre?

        EDIT:

        je l'ai trouvé. mais s'il existe un moyen ça m'interesse

        0
    6. Alors, je ne suis pas certain de tout comprendre.

      J'étais parti sur l'idée, qu'il me fallait créer 6 formulaires.

      - 2 qui concernent les séances : dont un d'ajout et un de consultation

      - 2 qui concernent les participants: dont un d'ajout et un de consultation

      -2 qui concernant les intervenants : dont un d'ajout et un de consultation.

      Quand tu m'écris que le formulaire d'affichage des séances et de gestion des participations peut, selon toi, être construit en partant d'une copie du formulaire "F_ajouter_suivi_activités. Ce que je comprends c'est que le formulaire de consultation sur lequel je parlais va combiner, et le formulaire d'ajout des participants. (gestion des participations). Est-ce bien cela?

      J'imagine qu'une partie des contrôles (indépendants) de la partie gauche serviront de filtre, les autres (dépendants) affichant les infos de la séance consultée.

      --> pour cette suggestion, j'ai dû mal à me représenter le formulaire fini.

      La partie de gauche proposerait des filtres pour afficher la séance recherchée/à consulter. Mais la partie de droite, ressemblerait à quoi? Un sous formulaire de F_séances, qui se mettrait à jour au fur et à mesure des choix faits dans les contrôles indépendants?

      0
      1. Contributeur

        Je suis resté sur ma suggestion en #272.

        Tu avais créé un formulaire F_ajouter_suivi_activites qui essayait de faire la gestion (ajout, consultation, modification) des séances, ainsi que la gestion (ajout, consultation, suppression) des participations.

        Cela dépassait clairement tes connaissances, et il était nécessaire de simplifier.

        J'avais donc d'en faire deux formulaires, un pour la création de séances et un pour la consultation de séances ainsi que la gestion des participations.

        La partie de gauche, aurait, en haut, des filtres (résidence, financement, activité, ...) pour réduire la liste des séances consultables.  En dessous, des zones de texte qui affichent la séance en cours.

        La partie de droite, elle ne change pas, c'est toute la gestion des participants.

        C'est une suggestion, pour préserver ce que tu avais créé, aussi bien pour ne pas perdre ton travail que parce que je suppose que tu trouvais cela convivial pour tes utilisateurs.

        0
      2. @yg_be

        Mais je te suis. Je vois bien que tu comprends et anticipes ce que je veux faire. C est pour cela que je cherche à bien cerner tes suggestions.

        0
    7. je crois que mon formulaire "ajouter séance" est fini.

      Maintenant, je passe à mon formulaire "consultation des séances"?

      si oui :

      - est ce que je dois partir d'un formulaire vierge (non relié à la table séance), j'ai envie de dire non. Cette fois, il doit être lié?

      -tous mes contrôles seront des zones de texte?

      0
      1. Contributeur

        Le formulaire d'affichage des séances et de gestion des participations peut, je pense, être construit en partant d'une copie du formulaire "F_ajouter_suivi_activites", en y empêchant de modifier, supprimer ou créer une séance.

        J'imagine qu'une partie des contrôles (indépendants) de la partie gauche serviront de filtre, les autres (dépendants) affichant les infos de la séance consultée.

        0
    8. Contributeur

      J'ai l'impression que tu crées des formulaires qui font un peu de tout, qui travaillent sur plusieurs tables et font en même temps de l'ajout et de la consultation.
      Si j'étais toi, je ferais un formulaire d'ajout, avec un bouton d'ajout, pour chaque table.  Sauf pour les tables simples où tu veux laisser l'utilisateur travailler en direct dans la table.
      Ce formulaire d'ajout pourrait aussi servir à la consultation et à la suppression d'enregistrements, comme tu as fait avec un sous formulaire qui affiche les participations.

      0
      1. réponse au 270

        j'essaie d'avoir d'une part:

        - pour ajouter des séances : un formulaire d'ajout des activités

        - pour consulter/modifier les séances ajoutées : un formulaire de consultation/modification des activités.

        Le formulaire ajout alimente la table séance et la table participation. C'étaient les formulaires que tu m'avais aidé à construire.

        j'essaie d'autre part d'avoir : 

        - pour ajouter des intervenants : un formulaire d'ajout des intervenants 

        - pour consulter/modifier les intervenants ajoutés un formulaire de consultation/modification des intervenants

        Le formulaire ajout intervenant alimente la table intervenant et le formulaire consultation/modification me permet de consulter les données de la table intervenant 

        Si je prends l'exemple des formulaires des séances

        Quand bien même, le formulaire d'ajout a pour fonction d'ajouter des séances. Je peux quand même circuler entre les différents enregistrements effectués. Et quand je circule entre les enregistrements, je me rends compte que lorsqu'à l'occasion du renseignement d'une nouvelle fiche séance, si à l'étape de sélection du financement je change le type de financement, tous les enregistrements précédents effectués avec un autre type de financement voient disparaître les champs intervenant et activité. Si j'essaie de rebasculer le type de financement sur celui d'origine, les informations de ces champs réapparaissent mais alors c'est les enregistrements effectués avec un type de financement différent qui disparaissent. Et j'observe la même chose dans celui de consultation

        Formulaire ajout : cas d'un enregistrement de séance avec le choix du financement A

        Formulaire ajout : conséquence de l'enregistrement de la fiche montrée dans la photo 1 sur un enregistrement antérieur

        Formulaire consultation: consultation du dernier enregistrement effectué depuis le formulaire ajout

        Formulaire consultation : consultation d'un enregistrement antérieur après l'ajout d'un enregistrement d'une nouvelle séance avec un autre type de financement depuis le formulaire ajout 

        0
      2. Contributeur
        @badarledur

        N'hésite pas, dans tes explications, à donner les noms des formulaires.

        Ton vocabulaire n'est pas toujours facile à suivre.  Si je comprends bien, pour ajouter des séances, tu as créé un formulaire "d'ajout des activités" qui s'appelle "F_ajouter_suivi_activites".  C'est bien cela?

        Tu mentionnes, si je comprends bien, des soucis avec quatre formulaires.  Traitons un souci à la fois.

        Commencons avec le premier formulaire que tu mentionnes, "F_ajouter_suivi_activites".

        De ce que je vois, ce formulaire, en ce qui concerne les séances, est à la fois un formulaire d'ajout et de consultation.

        Il permet de se déplacer dans les enregistrements des séances, et il permet de créer une nouvelle séance.

        Pour faciliter la création de séances, tu utilises des listes déroulantes successives, en cascade, et c'est une bonne idée.

        Par contre, quand tu visualises une séance existante, ces listes déroulantes n'ont pas de sens, il faudrait simplement avoir une boîte de texte pour chacun des champs.

        Ce que je suggère pour couvrir ce dont tu as besoin en ce qui concerne les séances, et récupérer le travail que tu as déjà fait:

        1. avoir un formulaire spécifique d'ajout de séances.
        2. avoir un formulaire d'affichage des séances et de gestion des participations

        Le formulaire d'ajout de séances peut, je pense, être construit en partant d'une copie du formulaire "F_ajouter_suivi_activites", en ne gardant que les listes déroulantes pour préparer la création d'une séance, et en y ajoutant un bouton d'ajout.

        Si tu penses utile, tu pourrais ajouter dans ce formulaire un sous formulaire qui affiche les séances existantes.  La suppression des séances est un peu délicate, car il y a peut-être des participations associées.

        .

        Le formulaire d'affichage des séances et de gestion des participations peut, je pense, être construit en partant d'une copie du formulaire "F_ajouter_suivi_activites", en y empêchant de modifier, supprimer ou créer une séance.

        0
      3. @yg_be

        N'hésite pas, dans tes explications, à donner les noms des formulaires.Ton vocabulaire n'est pas toujours facile à suivre. 

        -->désolé, je ne maîtrise pas la terminologie d'access...

        Si je comprends bien, pour ajouter des séances, tu as créé un formulaire "d'ajout des activités" qui s'appelle "F_ajouter_suivi_activites".  C'est bien cela?

        -->c'est bien cela

        Le formulaire d'ajout de séances peut, je pense, être construit en partant d'une copie du formulaire "F_ajouter_suivi_activites", en ne gardant que les listes déroulantes pour préparer la création d'une séance, et en y ajoutant un bouton d'ajout.

        -->j'ai dû mal à me représenter à quoi ressemblerait ce formulaire. Sur ce formulaire, il existe déjà un bouton ajout. C'est le bouton qui permet d'ajouter des participants à la séance. Et c'est ce bouton que tu m'avais aidé construire avec tout le système de requêtes (candidats inscrits, non inscrits, etc...). Donc là, le bouton ajout que tu évoques ici serait un second bouton, qui me permettrait d'ajouter les informations contenues dans mes listes déroulantes ? Si oui, les informations seraient ajouter dans la table "séance"? Puisque c'est là que je souhaite qu'elles aillent.

        --> le formulaire d'ajout des séance et d'ajout des participations ne serait pas le même?

        --> le second formulaire, lui, permettrait de consulter les informations renseignées via le formulaire d'ajout? Et les champs ne seraient plus des listes déroulantes mais des boîtes de texte? (= zone de texte?)

        -->si je souhaite modifier un enregistrement (si l'utilisateur fait une erreur), comment gérer cet aspect?

        0
      4. Contributeur
        @badarledur

        Effectivement, le formulaire d'ajout de séances aurait un bouton qui permettrait d'ajouter dans la table "séance" les informations contenues dans les listes déroulantes.  Il n'y aurait dans ce formulaire que la partie droite du formulaire "F_ajouter_suivi_activites", sans tout ce qui concerne les participants.

        Dans le formulaire d'affichage des séances et de gestion des participations, tout ce qui concerne les champs des séances ne serait plus des listes déroulantes mais des zones de texte (textbox en anglais).

        Souhaites-tu permettre librement de modifier ou supprimer une séance?  La supprimer même si il y a des inscrits?  Modifier tout, même la résidence ou la date, même si il y a des inscrits?

        0
      5. @yg_be

        ok je crois que j'ai compris.

        Mais alors, pour compléter intégralement les informations relatives à une séance.

        Cela se fera en 3 temps, via 3 formulaires différents ?

        1. le formulaire d'ajout des informations sur la séances (financement, activité, durée de l'activité, etc...)

        2.le formulaire d'ajout des participations (candidats inscrits à une séance)

        3.le formulaire d'ajout des intervenants (qui est le formulaire que j'étais en train d'essayer de construire).

        N'est-il pas possible de combiner les 3 dans un seul formulaire, un peu sur le modèle de ce que j'essayais de faire?

        0
    9. et je rencontre encore le problème de stockage des informations.

      Que ce soit dans mes formulaires ajout/consultation des activités ou bien dans mes formulaires d'ajout/consultation des intervenants.

      Au fur et à mesure que j'ajoute des nouvelles infos (nouvel intervenant ou nouvelle activité), les informations des formulaires consultation des activités précédentes ou les intervenants précédents ne restent pas stockées.

      La dernière fois, j'avais réussi à résoudre le problème pour le champs financement des formulaires ajout et consultation des activités. Dans celui de consultation, l'info n'était pas stockée dans le champs financement parce que la requête faisait référence à la table financement que j'avais supprimé. En mettant à jour la requête, j'avais réussi à stocker l'information.

      Là mes requêtes sont à jour dans mes formulaires de consultation et pourtant, dans les champs activités et intervenant, les infos disparaissent si j'ajoute une activité via mon formulaire d'ajout.

      Je ne sais vraiment pas comment résoudre ce problème.

      https://www.cjoint.com/c/MKeho38kKhE

      dans les formulaires ajout/consultation : le problème concerne les champs "activités " et "intervenant", les informations précédents disparaissent quand je remplis un nouveau formulaire ajout. elles disparaissent dans les deux formulaires "ajout" et "consultation". Y a le même comportement dans les deux formulaires. Mais elles sont bien stockées dans ma table séance et participation

      dans les formulaires ajout/consultation. Toutes les infos disparaissent quand j'ajoute via le formulaire d'ajout. les informations disparaissent dans les formulaires ajout et consultation. Y a le même comportement dans les deux formulaires. Mais elles sont bien stockées dans la table intervenant

      0
      1. suite au #268

        quand je suis sur une fiche déjà renseignée de mon formulaire ajout activités ou formulaire consultation activité pour laquelle j'avais déjà renseigné le formulaire, je dois resélectionner  le bon financement pour que les infos réapparaissent.

        En revanche, elles disparaissent des autres fiches quand je fais cette manip.

        si je vais dans une autre fiche, je resélectionne le bon financement et alors les infos "activités" et "intervenant" réapparaissent mais disparaissent des autres fiches. 

        En fait, ça dépend le choix du financement, quand j'ajoute un nouvelle séance avec formulaire ajout, les informations des fiches précédentes réapparaissent en fonction du dernier choix que j'ai fait dans "financement". 

        Et ce n'est pas directement lié entre mon formulaire ajout activité et consultation activité. Y a le même comportement. les fiches se ré-remplissent en fonction du dernier champs financement que je mets à jour dans la fiche. mais si je touche au financement dans le formulaire ajout, ça n'impacte pas directement celui de consultation. Si je touche financement A dans le formulaire ajout, mes fiches renseignées avec le financement A réapparaissent dans mes fiches du formulaire ajout mais pas dans le formulaire consultation. Dans le formulaire consultation, il faut aussi que je retouche au financement, pour que les infos renseignées dans les autres fiches qui présentent un financement commun réapparaissent. Mais celles les fiches renseignées avec un autre financement re-disparaissent

        et idem pour les formulaires ajout et consultation des intervenants.

        ici, aucune information ne reste stockée dans mes fiches déjà renseignées.

        Je dois resélectionner mes champs pour que les infos réapparaissent.

        Mais j'ai peut être une piste: ces formulaires ajout et consultation viennent alimenter et consulter les données contenues dans ma table intervenant.

        dans cette table intervenant, je n'ai que deux champs, id_personne et id_activité. 

        Mais mes formulaires, pour guider la saisie, comporte 5 champs. Les 3 premiers sont là pour faciliter la sélection dans les champs id-personne et id_activité.

        Les champs "résidence" et "financement" permettent de filtrer le champs id-activité pour alléger les propositions d'activités de la liste déroulante de mon champs id_activité;

        de même, le champs "catégorie intervenant" permet de filtrer le champs id_personne pour alléger les propositions des personnes de la liste déroulante de mon champs id_personne.

        Mais ce que je remarque, c'est que l'information de mes 3 champs qui me permettent de filtrer que sont "résidence", "financement" et "categorie intervenant" ne viennent alimenter aucune table. 

        Je me dis que mon problème vient de là.

        Mais en même temps, ce raisonnement ne peut pas s'appliquer à mes formulaires d'ajout et de consultation des activités car toutes les informations du formulaire viennent alimenter ma table "séance" et ma table "participation"

        0
    10. Et pourquoi mon bouton "add_intervenant" ne fonctionne pas?

      Qu'est ce que je n'ai pas fait? ><

      https://www.cjoint.com/c/MKdgDTP2FDE

      0
      1. Contributeur

        La première chose à faire, c'est, dans la macro, de ne pas désactiver les messages d'avertissement.

        0
      2. Contributeur
        @yg_be

        Ce qui empêche d'ajouter un intervenant, c'est la relation entre les tables intervenants et animateurs.

        Plus précisément, c'est le choix, dans cette relation, d'appliquer l'intégrité référentielle.

        A quoi sert la table des animateurs?

        0
      3. @yg_be

        Réponse au 263

        La table animateur est celle que j ai créée pour mes formulaires d ajout et de consultation des intervenants (relation intervenant/activité).

        J ai essaye de réunir les informations comme ma table séance avec mes formulaires d ajout et de consultation des activités 

        0
      4. Contributeur
        @badarledur

        A quel "objet réel", à quelle action ou à quelle relation correspond cette table animateurs?

        Il ne faut pas créer de table pour des formulaires.  Les tables décrivent la réalité.

        Il est souvent utile de créer des requêtes utilisées par les formulaires.

        0
      5. @yg_be

        réponse au #266

        j'ai dû mal comprendre tes suggestions en #242.

        0
    11. Je suis en train d'essayer de construire mon formulaire ajout animateur pour définir les relations intervenant-activité.

      Mais je sèche sur un point. Comme pour mes autres formulaires, je souhaite que la liste des activités proposées se filtre en fonction du choix de la résidence et du choix du financement.

      Je ne comprends pas pourquoi quand dans ma requête associée au champs "activité", quand j'ajoute le critère "type financement", ça ne fonctionne plus.

      j'ai construit sur le même modèle que les autres, et dans ce nouveau formulaire, ça ne passe pas. Uniquement avec ce critère. Quand j'enlève le critère financement, les activités se filtrent bien en fonction de la résidence choisie mais quand j'ajoute le critère financement, je n'ai plus rien.

      Peux tu regarder stp?

      https://www.cjoint.com/c/MKciIae0iYE

      Il s'agit du formulaire "f_animateurs_ajout" et le problème concerne le champs id_activités. Je n'arrive pas à ajouter l'étape de filtrage "financement"

      0
      1. Contributeur

        Tu avais récemment fait la même erreur.

        Tu n'as pas choisi la bonne colonne liée dans le contrôle financement de ce formulaire.

        Par ailleurs, je ne vois pas l'utilité de retourner id_residence dans la requête associée à ce contrôle.

        0
      2. @yg_be

        ce n'est pas dans la table activité que je dois récupérer "type financement"? 

        0
      3. Contributeur
        @badarledur

        "Colonne liée", c'est un des attributs du contrôle dans la définition du formulaire.

        0
      4. @yg_be

        J avais essayé de le mettre sur 4 colonnes et 4 colonnes liees et m assurer que chaque colonne avait une largeur suffisante pour faire apparaître l information mais ça n avait pas fonctionné. 

        0
      5. Contributeur
        @badarledur

        La colonne liée, c'est le n° de la colonne dont la valeur va être enregistrée dans le contrôle.  Ce n'est certainement pas le nombre de colonnes.

        0
    12. je me rends compte que dans mon formulaire consultation activités, certaines informations ne restent pas renseignées.

      en fait quand j'ajoute un nouvel évènement via le formulaire ajout activités, les informations sont bien renseignées dans la table "séance" mais dans formulaire consultation, certaines infos disparaissent (financement et intervenant disparaissent).

      De même dans le formulaire ajout, le nom des activités des fiches renseignées dans le formulaire s'efface quand j'ajouter un nouvel enregistrement.

      Alors pour intervenant, je suis en train d'essayer de créer un formulaire d'ajout et de consultation aussi.(je ne sais pas encore comment je vais ramener l'info intervenant après la création de ces formulaires) mais pour le champs financement de mon formulaire ajout, comment je peux faire pour qu'une fois mon formulaire renseigné, les infos soient conservées dans le formulaire de consultation?

      0
      1. Contributeur

        Si le formulaire ajout activités enregistre correctement les informations dans la table "séance", je suppose que le coupable, c'est le formulaire consultation, qui n'affiche pas les infos.  Quel est le nom de ce formulaire?

        Si je comprends bien, tu appelles "ajout activité" le formulaire qui crée des séances?

        0
      2. @yg_be

        j'ai effectivement : 

        - F_ajout_suivi_activite: pour celui créer les séances

        - F_consultation_suivi_activite : pour consulter et modifier les fiches

        Dans le premier formulaire, si je consulte les fiches, il manque toutes les activités déja renseignées (en revanche ces infos apparaissent dans la table séance)

        dans le second, ce sont toutes les informations qui concernent les intervenants et les types de financement qui ne se maintiennent pas dans les fiches.

        0
      3. @badarledur

        C'est bon, pour le formulaire consultation, j'ai réussi à trouver la source du problème.

        Je n'avais pas modifié la requête du champs financement. J'avais laissé tel quel le champs après la suppression de la table financement. En modifiant la requête de son contenu, je recupère maintenant l'information, et elles bien stockée.

        Pour le formulaire ajout, je n'y parviens pas mais je suppose que ce n'est pas grave puisque la fonction de ce formulaire est de créer les séances, non pas de les consulter? qu'en penses tu?

        0
      4. Contributeur
        @badarledur

        Pour le formulaire ajout, à toi de décider si il est utile de montrer, au fur et à mesure des ajouts, les séances déjà crées.  SI oui, tu pourrais t'inspirer de ce que tu as fait pour les inscriptions aux séances, où tu montrais la liste des inscriptions dans le sous-formulaire fille41.

        Je trouvais que cela donnait un résultat très convivial, et je ne sais pas si c'est utile de faire ainsi pour l'ajout de séances.

        Dis autrement, il est peut-être préférable, dans le formulaire ajout, de ne pas permettre de naviguer, et d'utiliser plutôt un bouton d'ajout.

        0
      5. @yg_be

        réponse au #251

        entendu, merci

        0
    13. Je remarque que mon champs "type_financement" dans mes tables "activité" et "séance"  est au format "textecourt".

      Je me demandais si je devais le passer au format numérique.

      En réfléchissant un peu, je me suis dit qu'on choisit un format numérique si dans les champs qu'on veut mettre en relation, il y en a un qui est au format "numéroauto". Est ce que mon raisonnement est correct?

      L'autre question que je me pose par rapport à mon champs "type financement" que ce soit dans ma table activité ou séance, c'est est ce que le fait que mon champs soit au format "textecourt", cela ne me bloquera quand je voudrais faire des états? Par exemple faire un état de toutes les séances qui relèvent du financement A?

      0
      1. Contributeur

        Une relation, c'est toujours via un champ à valeur unique, sans signification, qui ne devra jamais être mis à jour.  Le plus simple, c'est un nombre automatique.

        Ici, comme il n'y a pas de table financement, type_financement, ce n'est pas une relation, c'est un attribut de l'activité, comme le prénom est un attribut de la personne.

        Si tu avais une table financement, tu aurais un champ numérique automatique id_financement et un champ texte type_financement.

        0
      2. @yg_be

        D accord, ça me rassure. Merci

        0
    14. Mais nouveau soucis.

      Franchement, parfois, quand j'ai l'impression de faire un pas en avant, juste derrière je fais 5 pas en arrière avec Access.

      J'essaie de construire mon formulaire "Intevenant" (capacité). 

      J'étais assez fier, puisque j'avais réussi à intégrer dans mon formulaire tous les champs dont j'avais besoin pour guider et faciliter la saisie. J'avais associé toutes mes requêtes et ça se passait bien jusqu'à ce que je me rende compte de plusieurs choses.

      1. quand je saisis dans mon formulaire mes enregistrements sont bien "sauvegardés" dans ma table intervenant mais si je ferme mon formulaire et que je le ré'ouvre, ils apparaissent vide "non renseignée". En fonction de ce que je sélectionne : résidence 1 ou 2, financement A,B,C et catégories de la personne, chaque enregistrement refait apparaître mes anciens choix.

      Par exemple si l'enregistrement 1 et 2, j"avais choisi un financement 2 avec categorie d'intervenant "personnel", si dans un troisieme enregistrement je refais cette même selection, dans mes enregistrements 1 et 2 ces données réapparaissent.

      2. par contre si dans un nouvel enregistrement, je change, le type de financement et la catégorie de l'intervenant, de nouveau mes enregistrements antérieurs se vident de renseignements. Sur le formulaire. parce que dans la table intervenant, ils restent bien renseignés.

      Qu'est ce que je n'ai pas fait ou mal fait sur mon formulaire?

      mon fichier : https://www.cjoint.com/c/MJEgnOQuamE

      0
      1. Contributeur

        Je ne suis pas expert en formulaires et comment gérer les interactions avec l'utilisateur.

        Si je comprends bien, ton formulaire est conçu pour faire des ajouts, et fonctionne bien pour cela.

        Et il fonctionne mal pour visualiser la situation.

        Je pense à deux options:

        1. faire comme pour les inscriptions aux séances, où tu avais tout combiné dans un formulaire
        2. faire un formulaire d'ajout et un autre de visualisation/suppression 
        0
      2. @yg_be

        OK merci,  je vais essayer

        0
    15. Contributeur

      réponse au #220:

      le souci vient de la définition du contrôle F_ch_residence dans le formulaire la colonne liée doit être l'id de la résidence, pas son nom.

      0
      1. réponse au #225

        ah oui ok; ça fonctionne mieux en effet ^^

        0
    16. Contributeur

      pour éviter le souci en #217:

      dans le formulaire, un changement de résidence ne va pas automatiquement changer le choix dans la liste des financements.

      tu peux associer une macro à une mise à jour de la résidence, et, dans cette macro, changer la valeur du financement, peut-être la mettre à "?".

      0
      1. réponse au #223

        Je ne sais pas le faire. 

        J'ajoute une action DefinirPropriété? Nom du controle : F_ch_id_residence/valeur:?

        0
      2. Contributeur
        @badarledur

        De quel contrôle veux-tu changer la valeur?

        0
      3. @yg_be

        Réponse au #234

        tu peux associer une macro à une mise à jour de la résidence, et, dans cette macro, changer la valeur du financement, peut-être la mettre à "?".

        J ai du mal à me représenter le truc. 

        Associer une macro à une mise à jour de la résidence. Une mise à jour de la résidence c est déjà une macro? "Associer une macro à ", ça veut dire une deuxième macro?

        Et dans cette macro, changer la valeur du financement ? Pour changer la valeur du financement quelle macro je dois utiliser? Définir propriété ? Définir valeur? 

        Peut être la mettre à "?"  . "?" A quoi correspond cette valeur? 

        0
      4. Contributeur
        @badarledur

        Associer une macro à une mise à jour de la résidence.

        Créer une nouvelle macro associée à l'évenement "après mise à jour" du contrôle F_ch_id_residence

        dans cette macro, changer la valeur du financement

        Fais comme tu as écrit en #228, à part que le nom du contrôle n'est pas correct.

        Je propose de mettre le financement à "?", de façon à inviter l'utilisateur à choisir un financement.  Tu peux choisir un autre texte si tu préfères.

        1
      5. @yg_be

        Réponse au #239

        Ok j'ai compris. ca fonctionne. Je te remercie.

        le "?", je croyais que c'était un symbole comme "=" ou "<>". Je n'avais pas compris que le champs inscrirait simplement la valeur qu'on renseignerait.

        0
    17. Contributeur

      réponse au #218:

       table "intervenants" (capacites).

      1.Je pense que le champ id_intervenant ne sert à rien.  La clé primaire doit être sur le couple (personne, activité).  La relation plusieurs à plusieurs entre personnes et activités n'est pas immédiatement visible, elle résulte des relations de chacune des tables avec la table intervenants.

      2.  tout cela ne justifie pas d'ajouter des champs à la table intervenants.  ces données ("catégorie de personne", "type financement", "nom résidence") sont facilement récupérables via une requête. 

      0
      1. réponse au #221

        1. La clé primaire doit être sur le couple (personne, activité). Je ne comprends pas ça. Pour moi le champs id_intervenant, représentait la relation du couple id_personne/id_activité. Du coup, j'ai deux champs dans ma table intervenant? id_activité et id_personne? Comment j'associe ma clef primaire au couple?

        2. ok, c'est compris. C'est dans ce sens là que j'ai commencé à construire mon formulaire

        0
      2. Contributeur
        @badarledur

        comment associer une clé à un couple de champs?  regarde la définition des clés dans la table des participantions.

        0
      3. @yg_be

        réponse au #224

        dans ma table participation, la clef primaire est sur le champs "id_participation". C'est pourquoi dans ma table intervenant, j'avais un champs id_intervenant au format numeroauto. c'est donc bien lui qui défini la relation d'un couple id_activité/id_personne?

        0
      4. Contributeur
        @badarledur

        je pense que id_participation n'est pas utile et peut être supprimé.

        ce qui "définit" un couple id_activité/id_personne, c'est la présence du couple dans la table des participations.

        0
      5. @yg_be

        réponse au #229

        donc je peux utiliser seulement mes deux champs id_activité/id_personne sans mettre de clef primaire?

        0
    18. Je reviens sur la table "intervenants" (capacites).

      1.Je n'arrive pas à créer une relation plusieurs à plusieurs. J'ai 3 champs : id_intervenant, id_personne et id_activité. Mais quand je regarde les jointures dans les relations. Que ce soit quand ma table intervenant est reliée à celle de la table personne ou bien celle reliée à ma table activités, il est écrit type "un à plusieurs".

      2. tu m'avais expliqué que d'une part, il vaut mieux renseigner une table via un formulaire et d'autre part qu'on ne construit pas sa table en vue du formulaire qu'on va vouloir créer pour la remplir.

      Si je souhaite construire mon formulaire de la manière suivante : 

      - choix de la résidence, choix du financement qui va permettre d'avoir une influence sur la liste des activités à selectionner

      - choix de la catégorie de personne (j'ai ajouté : prestataire, personnel, partenaire) qui va influencer la liste des personnes à selectionner

      parce qu'en l'état, si j'ai 200 personnes dans ma table personne, c'est un peu pénible pour la sélection, idem pour les activités.

      ma question est la suivante : ma table intervenant, je la laisse qu'avec les 3 champs et je me débrouille avec le formulaire? ou bien je rajoute des champs "catégorie de personne", "type financement", "nom résidence" à ma table intervenant?

      0
      • 1
      • 2