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 :

Décider d'enregistrer les modifications dans formulaire et son sous-formulaire en même temps [AC-2016]


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Décider d'enregistrer les modifications dans formulaire et son sous-formulaire en même temps
    Bonjour,

    Je suis confronté à une difficulté avec un sous-formulaire... Je n'ai pas l'habitude de les utiliser mais là je suis apparemment obligé.

    Voilà ma base se compose principalement d'une grosse table (qui comporte les enregistrements que je nomme Opérations dans mon appli) qui alimente un grand formulaire (qui me permet de créer de nouvelles opérations et de les mettre à jour)....
    Il y a des opérations sur 10 domaines différents aussi j'ai construit un formulaire dans lequel j'ai mis un contrôle onglets pour qu'à chaque onglet correspondent les écrans d'un des dix domaines possibles (Domaine Retraite par exemple).
    Et toutes les infos étaient stockées dans une seule Table Opérations.

    Je pensais réussir à tout caser dans une table mais apparemment le nombre de champs dont j'ai besoin au final est plus élevé que le nombre de champs max par table (255), donc j'ai scindé ma table pour l'instant en deux tables.
    Le problème c'est que ma table alimentait mon formulaire principal, mais maintenant que les données viennent de deux tables, et qu'il faut que je puisse mettre à jour les données des deux tables dans mon formulaire, j'ai vu que l'on pouvait créer un sous-formulaire dans le formulaire principal.
    Ainsi les données de mon formulaire principal viennent de la première table, et les données du sous formulaire viennent de la deuxième table.

    Le problème que j'ai est que mon sous-formulaire fonctionne de manière "indépendante". Or j'aurais souhaité que lorsque je mets à jour des champs de mon sous-formulaire, ce n'est que lorsque je quitte le formulaire principal qu'il me demande d'enregistrer les modifs mais là le sous-formulaire enregistrait automatiquement les modifications lorsque je cliquais sur un objet du formulaire principal.
    J'ai réussi à mettre un message pour demander si on veut enregistrer les modifications mais du coup j'ai une macro sur l'évènement Avant mise à jour du sous-formulaire qui fait le même boulot que la macro que j'avais déjà créée sur le formulaire principal et qui sert pour les champs qui s'y trouvent...


    Aussi je me demandais s'il n'y a pas un moyen de gérer sur mon formulaire principal avec un bouton comme je l'ai fait initialement les modifications qui sont effectuées sur le sous-formulaire et le formulaire de manière globale, comme si ce n'était qu'un champs comme les autres du formulaire principal. ?

    Je sais c'est pas évident de comprendre mais j'ai fait au mieux pour expliquer !:o)

    Merci par avance

  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.

    En fait tu as sans doute un GROS problème d'architecture de tes données.
    Une seule grosse table de plus de 255 champs est quelque chose d'anormale.

    Tu parles de 10 domaines, il est donc probable que tu devrais avoir quelque chose comme :

    tblOperation
    ClefOpreration
    Autre Infos

    tblDomaine
    ClefDomaine
    Decsription

    tblOperationDomaine
    ClefOperationDomaine
    ClefOperation
    ClefDomaine
    Autres Infos reliées au domaine et à l'opération

    Avec un formulaire pour saisir les infos de l'opération
    et un sous-formulaire pour saisir les informations pour la partie OperationDomaine

    Si il s'avère que les champs nécessaires pour renseigner les domaines sont très différents, alors il faut envisager (à regret) une table d'association OperationDomaine par type de domaine donc dans le pire des cas 10 tables d'associations.
    Si tes domaines partagent des champs en communs, tu peux envisager une seule table avec les champs communs et tous les champs spécifiques nécessaires, en prévoyant de laisser les blancs certains champs inutiles selon le domaine.

    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
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Tu as parfaitement cerné les choses.
    J'ai fait simple tout de même, car des tables j'en ai beaucoup d'autres mais les principales sont effectivement :

    - une table Dossiers Agents (un dossier par agent et pour chaque agent il peut y avoir plusieurs opérations dans plusieurs domaines)
    - une table Domaines (avec mes 10 domaines d'activité)
    - une table Opérations (qui recense tout le travail effectué par un bureau dans les différents domaines)

    J'avais fait simple avec un formulaire (là encore je simplifie, j'en ai bien plus) de saisie des opérations quel que soit le domaine.

    Donc j'ai bien compris qu'il est mieux maintenant que j'y suis obligé d'avoir :

    - ma table Opérations avec tous les champs communs à tous les domaines (domaine concerné, statut de l'opération, gestionnaire, date de mise à jour...)
    - une table par domaine qui reprend toutes les informations à saisir pour le travail effectué sur chaque opération d'un domaine.

    Sachant que ma table opérations principale a une clé primaire avec un numéro auto, et que je reprends ce numéro pour m'en servir de clé primaire dans la table opération du domaine concerné.
    Du coup j'ai une relation un à un entre la table opérations principale et chaque table opérations par domaine.

    Mon problème c'est que je souhaite garder un seul formulaire de saisie des informations pour les opérations les 10 domaines. et pas en faire un pour chaque domaine. Car il y a toute la partie commune et l'ergonomie qui est encore en construction et donc si je faisais un formulaire pour chaque domaine il faudrait que je multiplie par dix le boulot de mise en forme...
    J'avais donc un formulaire alimenté par ma table principale et maintenant j'avais mis un sous-formulaire pour les opérations du domaine Retraite.

    Je vais donc faire ça pour les dix domaines. Il y aura donc un formulaire principal avec un sous-formulaire pour chaque domaine.

    Mon problème est que je souhaiterais qu'il n'y ai t qu'un processus d'enregistrement lorsque je quitte le formulaire de saisie principal et non un pour le sous-formulaire puis un pour le formulaire.

  4. #4
    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.

    Tous tes domaines ont tous des champs différents ?
    Il n'y a pas de moyen de faire quelque chose de générique qui accommoderait tous tes domaines en une seule table ?
    Strico sens, si en effet tu as une relation de 1 à 1, alors tu ne devrais avoir qu'une seule table.
    Ces situations existent mais sont assez rare. Il serait peut-être bon que tu donnes un peu plus d'info sur tes données et ce que tu stockes.

    Mon problème est que je souhaiterais qu'il n'y ai t qu'un processus d'enregistrement lorsque je quitte le formulaire de saisie principal et non un pour le sous-formulaire puis un pour le formulaire.
    Pas sur de ce que tu veux. Avec Access quand tu saisis une données et que tu quittes l'enregistrement, ce que tu as saisi est enregistré, donc à priori tu n'as pas de "Processus d'enregistrement" à considérer.

    As-tu la crainte que certains domaines ne soient pas saisie et que tu te retrouves avec une relation du type 1-0 et pas 1-1 ?

    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.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,
    Je vais essayer de joindre mon appli demain du boulot.
    Il va falloir que j’anonymise les données (je vais laisser quelques agents) avant et que j’enlève le groupe de travail.
    C’est une application qui va permettre de gérer et suivre le boulot effectué par les agents d’un bureau.
    A chaque domaine d’activité correspond des tâches pour traiter un dossier. Les éléments communs sont dans la table opérations principale.
    Maintenant je vais devoir scinder cette table pour la compléter avec dix autres correspondantes aux domaines.
    Ce que j‘ai déjà fait pour le domaine retraite.
    Ce qui va considérablement réduire le nombre de champs de ma table opérations principale !
    Pour ce qui est de l’enregistrement des données, lorsque le gestionnaire se trouve sur le formulaire de consultation/modification d’une opération, s’il fait des modifications, lorsqu’il quitte l’operation, je lui pose la question pour savoir s’il veut enregistrer les modifs ou non. Une manière de s’assurer qu’il n’a pas fait de modification sans le vouloir.
    Lorsque l’on est sur ce formulaire ni sur aucun d’ailleurs on ne navigue pas d’un enregistrement à un autre.
    Je joints le fichier demain.
    Merci

  6. #6
    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.

    A chaque domaine d’activité correspond des tâches pour traiter un dossier.
    OK tu as adopté une architecture de type "formulaire papier" où tu remplis des cases.

    Je t'invite à considérer l'architecture suivante :

    tblActivite 'Liste de toutes les activités possibles
    ClefActivite
    DescriptionActivite

    tblActiviteDomaine Liste des activités associées à un domaine
    ClefActiviteDomaine
    ClefActivite

    tblActiviteDossier Activités reliées à un dossier en particulier.
    ClefActiviteDossier
    ClefDossier
    ClefActiviteDomaine
    ClefActivite
    ValeurActivite

    Avec cette structure tu peux :
    Gérer un nombre variable d'activités selon le domaine.
    Ajouter des activités au besoin.

    N'avoir qu'un seul formulaire pour la saisie des activités quel que soit le domaine.

    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.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour les conseils.
    Mon problème principal restait tout de même l’enregistrement simultané formulaire et sous-formulaire.

  8. #8
    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
    Ok, donc je repose ma question d'avant la diversion.

    Pas sur de ce que tu veux. Avec Access quand tu saisis une données et que tu quittes l'enregistrement, ce que tu as saisi est enregistré, donc à priori tu n'as pas de "Processus d'enregistrement" à considérer.

    As-tu la crainte que certains domaines ne soient pas saisie et que tu te retrouves avec une relation du type 1-0 et pas 1-1 ?
    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.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Septembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Je travaille dans le public (je ne sais pas si c’est différent ailleurs), et l’usage veut que lorsqu’un gestionnaire consulte le dossier d’un agent, pour modifier des données il faut toujours cliquer sur un bouton pour confirmer la mise à jour. De cette manière il ne peut y avoir une modification non souhaitée.
    Dans mon appli, lorsqu’un gestionnaire est sur mon formulaire de consultation et de saisie (c’est le même), je préfère que lorsqu’il en sort, il y ait un message en cas de modifications. Comme ça il confirme ou non son souhait d’enregistrer.

    Je n’ai pas de problèmes de relations : lorsqu’une opération est créée, un numéro auto lui est attribué et je créée d’office une ligne vide portant ce numéro dans la table du domaine concerné.
    Après par l’intermédiAire du formulaire, le gestionnaire complète tous les champs nécessaires à son travail.

    Mon problème c’est que maintenant que mon formulaire contient les données de deux tables, j’ai mis un sous-formulaire pour y placer les champs de la deuxième table.

    La solution que j’ai mise en place en attendant éventuellement mieux c’est d’avoir un message si des modifs ont été effectuées sur le sous formulaire et éventuellement un deuxième message lorsque je quitte le formulaire en cas de modifs sur des champs du formulaire. C’est pas le top mais je n’ai pas mieux.

  10. #10
    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
    Ha oui en effet si tu as besoin d'une confirmation d'enregistrement alors tu as un problème.

    Si tu n'as pas de risque que plusieurs personnes modifient en même temps la même fiche, alors tu pourrais envisager d'utiliser des recordsets déconnectés (ce qui implique pas mal de modif) ou alors une table temporaire.

    Avec les recordsets déconnectés, tu fais une copie en mémoire de tes données, tu travailles sur cette copie puis tu enregistres cette copie. À part les formulaires de Access et le VBA tu ne peux pas utiliser autre chose : pas de requête, etc. Ce qui veut dire que tout ce que ne te propose pas les recordeset déconnectés, il faut que tu le programme toi-même.

    L'idée est la même avec une table temporaire :
    1. Tu copies les données dans la table temporaire.
    2. Tu fais ta saisie sur la table temporaire.
    3. Tu sauvegardes (ou pas) les données de la table temporaire.
    4. Tu détruis les données temporaires.


    Évidement cela augmente le nombre de tables puisque tu as la vraie table et la table de travail mais cela te permet d'utiliser les outils standard de Access et copier d'une table à une autre est relativement simple.

    Perso j'irai avec cette solution.

    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.

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

Discussions similaires

  1. [XL-2003] Enregistrer les modification dans la feuille active
    Par StandManMike dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2012, 12h59
  2. Réponses: 11
    Dernier message: 24/08/2006, 11h22
  3. Réponses: 8
    Dernier message: 12/07/2006, 10h32
  4. Réponses: 11
    Dernier message: 16/05/2006, 12h34
  5. Enregistrer une modification dans un formulaire
    Par micheline dans le forum Access
    Réponses: 5
    Dernier message: 26/06/2005, 19h13

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