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 :

Modification d'enregistrements via formulaire d'affichage [AC-2013]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Ingénieur Généraliste
    Inscrit en
    Février 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Généraliste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 35
    Points : 30
    Points
    30
    Par défaut Modification d'enregistrements via formulaire d'affichage
    Bonjour,

    Situation actuelle : formulaire me permettant d'afficher/trier une liste l'enregistrements à l'aide d'une requête paramétrée de type Select appliquée à un bouton "Afficher".

    Nouveau besoin : chaque enregistrement possédant une case à cocher appelée "Validé", je souhaiterais pouvoir venir cocher cette case via mon formulaire. J'ai conscience que ma requête de type Select ne me permet pas de modifier les enregistrements affichés : "Impossible de mettre à jour Recordset".

    Existe-t-il une solution ?

    Merci d'avance pour vos propositions

  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.

    Une requête select permet de modifier les données si elle n'est pas en jointure 1 à N.

    Là ce qui te manque c'est un champ qu'on pourrait nommé [EstSelectionne] dans la table qui alimente la requête qui alimente le formulaire.
    Et éventuellement vérifier que les modifications (éditions) sont autorisées par ton formulaire.
    Note que tu peux verrouiller tes champs un à un et donc avoir dans le même formulaire qui autorises les mises à jour des champs qui ne sont pas modifiables et d'autres qui le sont.

    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
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Ingénieur Généraliste
    Inscrit en
    Février 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Généraliste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 35
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse cependant je ne vois toujours pas comment autoriser la modification des champs affichés par mon formulaire.

    Quant à mon champ "Validé", il n'est lié à aucune autre table.
    Citation Envoyé par marot_r Voir le message
    Une requête select permet de modifier les données si elle n'est pas en jointure 1 à N.

    Là ce qui te manque c'est un champ qu'on pourrait nommé [EstSelectionne] dans la table qui alimente la requête qui alimente 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.

    Quant à mon champ "Validé", il n'est lié à aucune autre table.
    oui et c'est là un de tes problèmes. Il faut que tu crée ce champ dans la table.

    Pour l'autorisation de modification, cela peut venir d'une restriction au niveau du formulaire ou parce que tu as une jointure 1 à N dans ta requête.

    Peux-tu poster le SQL de la requête ?

    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
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Ingénieur Généraliste
    Inscrit en
    Février 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Généraliste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 35
    Points : 30
    Points
    30
    Par défaut
    Mon champ "Validé" (de type Oui/Non) est pourtant bien présent dans ma table, c'est juste qu'il n'est ni une clef primaire ni une clef étrangère et n'est donc pas lié par une jointure de type 1 à N ou 1 à 1.

    Ci-dessous le code SQL de ma requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT PPMS.*, Lot_Avion.Num_Lot, Lot_Avion.Standard_Final
    FROM Standard INNER JOIN (((Lot_Avion INNER JOIN MSN ON Lot_Avion.Num_Lot = MSN.num_Lot) INNER JOIN ((WP INNER JOIN MS ON WP.designation_WP = MS.designation_WP) INNER JOIN [MS/WP] ON (WP.designation_WP = [MS/WP].designation_WP) AND (MS.Num_MS = [MS/WP].num_MS)) ON MSN.ref_MSN = WP.ref_MSN) INNER JOIN PPMS ON MS.Num_MS = PPMS.num_MS) ON (Standard.Standard = MSN.Standard_actuel) AND (Standard.Standard = Lot_Avion.Standard_Final)
    WHERE (((Lot_Avion.Num_Lot)=[Formulaires]![Afficher la liste des PPMS]![Num_Lot]) AND ((Lot_Avion.Standard_Final)=[Formulaires]![Afficher la liste des PPMS]![Standard_Final]));
    Merci pour ta patience

  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.

    Tu as un paquet de jointures et elles sont probablement de type 1 à N (ou du moins Access le croit-il), c'est à dire qu'à un enregistrement de la table X sont associés un ou plusieurs enregistrements de la table Y.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM Standard INNER JOIN (((Lot_Avion INNER JOIN MSN ON Lot_Avion.Num_Lot = MSN.num_Lot) INNER JOIN ((WP INNER JOIN MS ON WP.designation_WP = MS.designation_WP) INNER JOIN [MS/WP] ON (WP.designation_WP = [MS/WP].designation_WP) AND (MS.Num_MS = [MS/WP].num_MS)) ON MSN.ref_MSN = WP.ref_MSN) INNER JOIN PPMS ON MS.Num_MS = PPMS.num_MS) ON (Standard.Standard = MSN.Standard_actuel) AND (Standard.Standard = Lot_Avion.Standard_Final)

    Les champs impliqués dans la jointure n'influence pas le fait qu'on puisse le saisir ou pas.

    Une méthode, un peu "Crade", mais qui marche est de remplacer les jointures par des DFirst() pour afficher les informations venant des autres tables.

    Si tu peux poste un copie d'écran de ton concepteur de requête. je comprend généralement mieux les jointures quand je vois leur représentation graphique que dans le SQL.

    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
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Ingénieur Généraliste
    Inscrit en
    Février 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Généraliste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 35
    Points : 30
    Points
    30
    Par défaut
    Merci encore pour ton aide, ci-contre le screenshot des tables permettant le fonctionnement de ma requête, en espérant que ce soit un peu plus clair :


    Nom : Exemple2.png
Affichages : 1566
Taille : 39,0 Ko

  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.

    Avant toute chose fait une sauvegarde de ta requête telle qu'elle est.

    Puis essaye de te limiter aux tables dont tu as vraiment besoin. Ici il me semble que la table [Standard] n'est pas utile.
    En passant je suis surpris par tes liaisons 1 à 1. Habituellement un liaison 1 à 1 indique qu'il ne devrait y avoir qu'une seule table.

    Ensuite, je te suggère de disposer tes tables de gauche à droite en commençant par [PPMS] et allant vers [standard].
    Cela ne change rien pour Access mais je trouve cela plus compréhensible : je commence par la table la plus importante de ma requête, celle où je fais mes saisies et je fini par celles de référence.

    Après cela j'essaierai de remplacer les relations par des jointure du type "Tous ceux de la table de départ et seulement ceux de la table associée".
    Si tu supprimes la relation et recréé la jointure en partant de la gauche vers la droite c'est le choix 2 des propriétés de la jointures. Cela va te faire un truc du genre tblPrincipale -> tblAssoiciee.
    Comme tu vois si tu les disposes de gauche à droite tu as juste à suivre les flèches et tu trouves les données.

    Pour vérifier si tes données sont modifiables, tu affiches les résultats de la requête et le bouton de déplacement [>*] est actif alors c'est bon.
    Sinon c'est qu'une de tes jointures "Verrouille" la requête.

    Si c'est le cas et vu la complexité de ta chaîne de tables je n'ai pas vraiment d'idée comment passer outre.
    • Une série de DFirst() dans des DFirst() ?
      Un truc du genre DFirst( Dfirst( Dfirst( ...), ...), ...). Ça risque de devenir vite illisible.
    • Une fonction VBA qui va reproduire l'enchainement des recherches et te donner l'info finale ?
      J'irai probablement vers cette solution.
    • Une façon de court-cuiter toutes la chaîne pour trouver directement l'info dont tu as besoin ?


    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
    Nouveau membre du Club
    Homme Profil pro
    Apprenti Ingénieur Généraliste
    Inscrit en
    Février 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Généraliste
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 35
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Tout d'abord merci de ton aide, j'ai réussi à trouver une solution plus drastique et efficace : changer le type de recordset de ma requête en Feuille de réponse dynamique (MAJ globale).

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

Discussions similaires

  1. Question ajout enregistrement via formulaire
    Par Accessaa dans le forum Modélisation
    Réponses: 7
    Dernier message: 07/06/2013, 12h50
  2. Soucis de modification de champ via formulaire
    Par symphyle dans le forum IHM
    Réponses: 3
    Dernier message: 13/01/2009, 19h59
  3. Probleme sur enregistrement via formulaire
    Par JeanMikael dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/09/2007, 22h17
  4. Réponses: 25
    Dernier message: 03/05/2007, 15h40
  5. Modification critére requête via formulaire
    Par frevale dans le forum Access
    Réponses: 1
    Dernier message: 02/11/2005, 21h30

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