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 :

Problème de mise à jour de table par requêtes imbriquées


Sujet :

Access

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Problème de mise à jour de table par requêtes imbriquées
    Bonjour,

    J'ai une table "Formation" qui est liée à une tables "Sessions" en 1 à plusieurs
    Dans ma table "Formation" je voudrais mettre à jour le champ "TauxRealisation" en comptabilisant les "Sessions" réalisées
    J'ai créé une première requête de sélection qui fait le calcul du taux de réalisation pour chaque formation et ça fonctionne
    J'ai créé une seconde requête de mise à jour qui reprend la requête précédente liée à la table formation par la clé primaire
    Et je demande une mise à jour du champ "TauxRealisation" de la table "Formation" avec la valeur "Taux" de la requête 1

    Mais ça ne marche pas. Le message d'erreur dit "L'opération doit utiliser une requête qui peut être mise à jour"
    Mes tables ne sont pas en lecture seule
    Le seul champ à mettre à jour vient de la table "Formation"

    Je ne comprend pas pourquoi j'ai se message.

    Merci de votre aide
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut
    Je reprend votre devise "Les solutions les plus simples sont les plus efficaces"
    Pourquoi ne pas ajouter un champ calculé nommé "Taux de réalisation" (dans 'Formations') dans lequel vous mettez la formule utilisée dans votre première requête.
    La formule du champ calculé n'est pas toujours acceptée par Access, auquel cas, vous pouvez transformez votre requête en requête de mise à jour pour alimenter le champ nouvellement ajouté.

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 088
    Points : 5 204
    Points
    5 204
    Par défaut
    Bonjour,

    Le message
    Citation Envoyé par lololebricoleur Voir le message
    "L'opération doit utiliser une requête qui peut être mise à jour"
    est un grand classique mais n'est pas simple à analyser/expliquer. En pratique cela veut dire que la jointure désignée dans l'update est construite sur des relations ambigües et est donc en lecture seule.

    C'est d'autant plus compliqué qu'access accepte des update sur jointure alors que ce n'est pas standard en SQL

    Pour corriger cela plusieurs solutions :
    - modifier la nature des relations entre les tables pour que la jointure soit en écriture (si c'est possible)
    - utiliser dans l'update une fonction publique (définie dans un module) qui calcule le taux de réalisation ce qui permet d'écrire un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update matable set TauxRealisation=mafonction(maformation) where ...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci pour votre aide,

    J'ai trouvé une parade en créant une table temporaire mais je vais explorer vos pistes.

    Merci ;-)
    Les solutions les plus simples sont les plus efficaces

  5. #5
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Je suppose que dans ta Requete1 tu a ajouté le champ id_Formation alors tu fais un truc comme çà:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Formation F, Requete1 R
    SET F.TauxRealisation = R.Taux
    WHERE (F.id_formation = R.id_Formation);
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

Discussions similaires

  1. Problème de mise à jour de table par vba
    Par emulamateur dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/06/2013, 08h17
  2. mise à jour de table par un trigger
    Par smaugy dans le forum Développement
    Réponses: 2
    Dernier message: 31/05/2011, 10h08
  3. Réponses: 1
    Dernier message: 08/07/2009, 11h52
  4. problème de mise à jour des tables (10g)
    Par bad lieutenant dans le forum Administration
    Réponses: 7
    Dernier message: 26/04/2007, 17h21
  5. problème de mise à jour de table
    Par captainamerica75 dans le forum Access
    Réponses: 5
    Dernier message: 04/07/2006, 22h14

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