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

Langage SQL Discussion :

[ACCESS] probleme de Mise à jour


Sujet :

Langage SQL

  1. #1
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut [ACCESS] probleme de Mise à jour
    Salut à tous
    J'ai une table et une requête
    T_Agent(idAgent,SoldeAgent,...)
    R_MAJ_Solde(idAgent,Solde,Prestation,Remboursement,Retenue,...)

    Je veux une requête qui permet de mettre àjour le solde de chaque agent, mais ça trèbuche au niveau des jointures.

    La formule est la suivante :
    SoldeAgent = (Solde +Prestation) - (Remboursement + Retenue)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE T_Agent P  SET SoldeAgent =  (SELECT (Solde +Prestation) - (Remboursement + Retenue) 
                           FROM R_MAJ_Solde R WHERE R.idAgent = P.idAgent )
                WHERE (((P.idAgent)=(SELECT idAgent FROM R_MAJ_Solde R WHERE R.idAgent =P.idAgent)))
    SGBD : Access 2003
    Scuse me while I kiss the sky ! Jimi Hendrix

  2. #2
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    une solution mais pas élégante :
    tu crée un recordset de R_MAJ_Solde
    tout en parcourant tu fais une mise à jour la table T_agent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE T_Agent P  SET SoldeAgent =  (R_MAJ_Solde.Solde +R_MAJ_Solde.Prestation) - (R_MAJ_Solde.Remboursement + R_MAJ_Solde.Retenue) WHERE T_agent.idAgent = R_MAJ_Solde.idAgent )
    A+

  3. #3
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Bonjour,

    Et pourquoi ça ne suffit pas de faire comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE T_Agent 
    SET SoldeAgent =  
    (
    SELECT (Solde +Prestation) - (Remboursement + Retenue) 
    FROM R_MAJ_Solde 
    WHERE R_MAJ_Solde .idAgent = T_Agent.idAgent 
    )

  4. #4
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par TheLeadingEdge
    Bonjour,

    Et pourquoi ça ne suffit pas de faire comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    UPDATE T_Agent 
    SET SoldeAgent =  
    (
    SELECT (Solde +Prestation) - (Remboursement + Retenue) 
    FROM R_MAJ_Solde 
    WHERE R_MAJ_Solde .idAgent = T_Agent.idAgent 
    )
    Access refuse les requêtes de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET nomChamps =  (SELECT ...)
    Scuse me while I kiss the sky ! Jimi Hendrix

  5. #5
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Citation Envoyé par Bujuman
    Access refuse les requêtes de la forme
    Code:
    SET nomChamps = (SELECT ...)
    Dsl, je savais pas.

  6. #6
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Il me vient l'idée de créer une autre requête de selection à partir de ces deux entités et de faire à nouveau la requête de mise à jour (Comme si les choses ne se passait que sur une seule et unique table)

    Citation Envoyé par Cybher
    Hors - sujet : Le King qui utilise Access, je suis decu....
    Si access n'accepte pas ce genre de requete, je ne vois pas comment faire...
    moi qui pensait que le King avait une réponse a tout...
    Ah si Tofalu passait par là !
    Scuse me while I kiss the sky ! Jimi Hendrix

  7. #7
    Membre expert
    Avatar de TheLeadingEdge
    Inscrit en
    Mai 2005
    Messages
    1 199
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 1 199
    Points : 3 103
    Points
    3 103
    Par défaut
    Re,

    Et si tu essaies comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE T_Agent 
    INNER JOIN R_MAJ_Solde 
    ON R_MAJ_Solde.idAgent = T_Agent.idAgent 
    SET SoldeAgent =  
    (Solde + Prestation) - (Remboursement + Retenue) 
    ;

  8. #8
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par TheLeadingEdge
    Re,

    Et si tu essaies comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE T_Agent 
    INNER JOIN R_MAJ_Solde 
    ON R_MAJ_Solde.idAgent = T_Agent.idAgent 
    SET SoldeAgent =  
    (Solde + Prestation) - (Remboursement + Retenue) 
    ;
    Ca ne marche toujours pas. J'en déduit que Access ne gère les requêtes update plusieurs tables.

    Je me suis finalement servi des recordsets VB6

    Merci à tous
    Scuse me while I kiss the sky ! Jimi Hendrix

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

Discussions similaires

  1. [Débutant] Probleme de mise à jour dataset avec champ multi-valués access (2007)
    Par gill-bates dans le forum VB.NET
    Réponses: 12
    Dernier message: 09/05/2014, 09h20
  2. Réponses: 10
    Dernier message: 28/12/2005, 21h52
  3. Probleme de mise à jour et de modification d'une base
    Par flambo88 dans le forum Requêtes
    Réponses: 17
    Dernier message: 07/12/2005, 14h27
  4. Probleme de mise à jour de mes Edit Box
    Par bibi_64 dans le forum MFC
    Réponses: 2
    Dernier message: 02/11/2005, 22h49
  5. probleme de mise à jour de BD
    Par k_boy dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 30/05/2004, 21h58

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