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 :

"L’opération doit utiliser une requête qui peut être mise à jour." [AC-2010]


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Par défaut "L’opération doit utiliser une requête qui peut être mise à jour."
    Bonjour à tous !
    Déjà tous mes vœux pour cette période de fêtes.

    Je souhaiterais profiter de votre savoir infini pour un soucis que je rencontre

    Pour info :
    - Une table générale ou se trouve des gens bénéficiant d'un montant de subvention variable, un numéro de convention en rapport à la subvention, plusieurs conventions.
    - Une seconde table permettant de gérer mes conventions. (Numéro, montant total de la subvention, relicat de la subvention après déduction des subs déjà allouées).
    - Une requête qui me calcule le montant total de subs attribué en fonction de la convention.

    Je souhaiterais importer les résultats de ma requête (relicat_sub) dans ma seconde table de gestion des conventions (montant_dispo), en fonction bien sur des n° de conv !

    Le résultat de ma requête :
    N_DE_CONVENTION MONTANT_TOTAL_CONV SommeDeMONTANT_SUBVENTION Relicat_Sub
    1046140 (1) 2014 246 200,00 € 192 122,89 € 54 077,11 €
    1060222 (1) 2015 959 500,00 € 264 889,72 € 694 610,28 €


    Ma table Conventions ou le relicat sub doit être renvoyé dans le champs montant dispo :
    ID N_CONVENTION MONTANT_TOTAL_CONV MONTANT_DISPO
    1 1032384 (1) 2012 63 332,00 € ici
    2 1046140 (1) 2014 246 200,00 € ici
    3 1060222 (1) 2015 959 500,00 € ici

    Merci beaucoup de vos réponses et du temps apporté
    Si vous souhaitez d'autre éléments n'hésitez po !
    LaTomate

  2. #2
    Membre éclairé
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 429
    Par défaut
    essaye une requêtes ajout ou mise à jour ?

  3. #3
    Membre Expert
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Par défaut
    Bonjour,

    moi ce que je ne pige pas trop c'est où se trouvent les montants des subventions allouées.
    Car ta requête utilise forcément cette donnée pour calculer le reliquat.

    Je suis parti du principe qu'il y avait une table dans laquelle cette donnée était disponible et je l'ai appelé "Allouees".
    Elle est composée des champs
    id auto N_CONVENTION Montant_sub_allouee
    1 1046140 192 122,89 €
    2 1060222 264 889,72 €

    J'ai aussi recrée ta table CONVENTIONS comme suit:
    ID N_CONVENTION MONTANT_TOTAL_CONV MONTANT_DISPO
    1 1032384 63 322,00 € 0,00 €
    2 1046140 246 200,00 € 0,00 €
    3 1060222 959 500,00 € 0,00 €

    La première requête Query1 calcule le reliquat:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Allouees.N_CONVENTION, Conventions.MONTANT_TOTAL_CONV, Allouees.[Montant_sub_allouee], 
               [MONTANT_TOTAL_CONV]-[Montant_sub_allouee] AS reliquat
    FROM Allouees INNER JOIN Conventions ON Allouees.N_CONVENTION = Conventions.N_CONVENTION;

    La deuxième requête Query2 fait la mise à jour du champ MONTANT_DISPO de la table CONVENTIONS
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE Query1 INNER JOIN Conventions ON Query1.N_CONVENTION = Conventions.N_CONVENTION SET  [MONTANT_DISPO]=Query1.reliquat;

    Résultats :
    ID N_CONVENTION MONTANT_TOTAL_CONV MONTANT_DISPO
    1 1032384 63 322,00 € 0,00 €
    2 1046140 246 200,00 € 54 077,11 €
    3 1060222 959 500,00 € 694 610,28 €

    j'espère que c'est assez clair pour toi.

    Bonnes fêtes à tous,

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Par défaut
    Salut Franck,
    merci beaucoup pour ta réponse c'est Cool !

    - Alors chez moi la table où se trouve les subventions allouées s'appelle ASSAINISSEMENT avec les champs [MONTANT_SUBVENTION] et [N_DE_CONVENTION]
    - La table Subventions se nome CONVENTIONS_AESN avec comme champs [N_DE_CONVENTION] - [MONTANT_TOTAL_CONV] - [MONTANT_DISPO]

    Alors la Query 1 je l'avais déjà, j'ai tester quand même la tienne mais ça ne me donne pas le même résultat ça soustrait systématiquement la sub allouées [montant_subvention] au montant total sans décompte. (utilisation sans opération)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Assainissement.N_DE_CONVENTION, Conventions_aesn.MONTANT_TOTAL_CONV, Assainissement.Montant_subvention, [MONTANT_TOTAL_CONV]-[Montant_subvention] AS reliquat
    FROM Assainissement INNER JOIN Conventions_aesn ON Assainissement.N_de_CONVENTION = Conventions_aesn.N_de_CONVENTION;

    La mienne (rqt_total_sub_cons) qui me donne le bon résultat mais à laquelle j'ai appliqué des Opérations :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ASSAINISSEMENT.N_DE_CONVENTION, CONVENTIONS_AESN.MONTANT_TOTAL_CONV, Sum(ASSAINISSEMENT.MONTANT_SUBVENTION) AS SommeDeMONTANT_SUBVENTION, [montant_total_conv]-[sommedemontant_subvention] AS Relicat_Sub
    FROM CONVENTIONS_AESN INNER JOIN ASSAINISSEMENT ON CONVENTIONS_AESN.[N_DE_CONVENTION] = ASSAINISSEMENT.N_DE_CONVENTION
    GROUP BY ASSAINISSEMENT.N_DE_CONVENTION, CONVENTIONS_AESN.MONTANT_TOTAL_CONV;

    Ta requête Query2 pour la mise à jour, ce que je cherchais comme un noobs ^^, fonctionne mais du coup renvoi des valeurs erronées ...
    Et quand je souhaite l'appliquer à ma Query1 (rqt_total_sub_cons) il me lance comme erreur "L’opération doit utiliser une requête qui peut être mise à jour."

    Ma requetes de MAJ, (rqt_maj_reliquat1) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE rqt_Total_sub_cons  INNER JOIN  Conventions_aesn  ON  rqt_Total_sub_cons.N_DE_CONVENTION = Conventions_aesn.N_DE_CONVENTION SET [MONTANT_DISPO] = rqt_Total_sub_cons.Relicat_Sub;

    Merci beaucoup encore et dès que j'ai trouvé je post !

    Bonne fêtes encore les amis

    LaTomate

    Edit : C'est les Opérations inscrites dans ma requête de calcul qui doit casser les pieds, c'est la seul différence que j'ai trouvée ^^

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Par défaut
    1/2 Bingo,

    alors avant tout pour le résultat de ta query1, qui ne correspond pas, provient du fait que la table que tu as créer en exemple ne contient qu'une valeur (de sub allouee) par convention, que ma table elle contient un nombre énorme de sub allouées par convention.

    Il est donc nécessaire de créer une opération, un "regroupement" pour le N° de Convention ainsi que pour le Montant Total Conv. Les Sub Allouée doivent être sur l'opération "Somme".
    Et enfin pour le Reliquat on le passe en "Expression"

    La requête avec modification :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ASSAINISSEMENT.N_DE_CONVENTION, CONVENTIONS_AESN.MONTANT_TOTAL_CONV, Sum(ASSAINISSEMENT.MONTANT_SUBVENTION) AS SommeDeMONTANT_SUBVENTION, [montant_total_conv]-[sommedemontant_subvention] AS Relicat_Sub
    FROM CONVENTIONS_AESN INNER JOIN ASSAINISSEMENT ON CONVENTIONS_AESN.[N_DE_CONVENTION] = ASSAINISSEMENT.N_DE_CONVENTION
    GROUP BY ASSAINISSEMENT.N_DE_CONVENTION, CONVENTIONS_AESN.MONTANT_TOTAL_CONV;

    Et la c'est le drame .... La requête de mise a jour ne fonctionne plus avec comme message erreur "L’opération doit utiliser une requête qui peut être mise à jour."

    La requête de Maj :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE rqt_Total_sub_cons INNER JOIN Conventions_aesn ON rqt_Total_sub_cons.N_DE_CONVENTION = Conventions_aesn.N_DE_CONVENTION SET Conventions_aesn.MONTANT_DISPO = [rqt_Total_Sub_ConS].[Relicat_Sub];

    Voila voila je fouine encore et une solutions serait peut être une table temporaire mais j'aime pas ça fait bricolage ^^

    Allez la Bise !

    LaTomate

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 14
    Par défaut
    Bon bah voila ^^

    en fait on ne peut importer de champs calculés par une rqt ajout ou mise à jour ...
    Je vais voir pour une table temporaire !

    Je fais suivre mais si des pros ont de meilleurs idées je suis preneur

    LaTomate

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

Discussions similaires

  1. [AC-2010] Importer des données excel dans une table access
    Par docjo dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/06/2014, 20h33
  2. Importer des données Excel dans une table Access
    Par Flaguette dans le forum Modélisation
    Réponses: 3
    Dernier message: 25/09/2008, 21h50
  3. Réponses: 5
    Dernier message: 20/06/2007, 14h11
  4. [9i] Importer des données Excel dans une table
    Par oasma dans le forum SQL
    Réponses: 6
    Dernier message: 19/03/2007, 07h39
  5. Réponses: 6
    Dernier message: 22/12/2006, 14h14

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