Page 1 of 2 12 LastLast
Results 1 to 15 of 19
  1. #1
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26

    Faire la soustraction de deux valeurs d'un meme champ en access


    Bonjour,
    Comment faire la soustraction de deux valeurs d'un même champ en Access
    Cordialement,
    DIOP

  2. #2
    orange's Avatar
    orange is offline Moderator
    Windows XP Access 2003
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,850
    Sont-ils partie de champ à valeurs multiples, ou deux valeurs dans différents dossiers?

    Peut-etre, http://allenbrowne.com/subquery-01.html

    Get the value in another record


  3. #3
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    [QUOTE=orange;266283]Sont-ils partie de champ à valeurs multiples, ou deux valeurs dans différents dossiers?

    Peut-etre, http://allenbrowne.com/subquery-01.html

    Get the value in another record

    Click image for larger version. 

Name:	imageetat.JPG 
Views:	24 
Size:	16.6 KB 
ID:	19887
    L’état ci-dessus provient d’une requête.
    Je voudrais avoir une zone de texte ou je mettrai déficit qui va être la différence entre les deux montants en rouge sur le même état.

  4. #4
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    l' exécution de la requête donne toujours deux enregistrements. A partir des deux valeurs affichées du champ TOTAL, je veux afficher sur un controls par exemple deficit la différence des deux valeurs du champ TOTAL.
    Cordialement,

  5. #5
    orange's Avatar
    orange is offline Moderator
    Windows XP Access 2003
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,850
    Normalement avec des tables normalisées vous ne auriez pas un champ total. Vous souhaitez conserver les détails et, si besoin, vous auriez une requête pour calculer les "totaux".

  6. #6
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    Bien sur le champ TOTAL est un champ calculé dans la requête. Ci-dessous la requête qui est derrière l'etat
    Click image for larger version. 

Name:	copie.JPG 
Views:	21 
Size:	39.0 KB 
ID:	19896

  7. #7
    orange's Avatar
    orange is offline Moderator
    Windows XP Access 2003
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,850
    Je ne peux pas lire les champs dans les images. Si vous obtenez toujours deux enregistrements de la requête, comment sont les dossiers chacun identifié?

    Pouvez-vous envoyer la requête SQL?
    Ma compréhension est que vous exécutez une requête et il renvoie toujours deux dossiers, et que vous souhaitez soustraire les valeurs de champ de deux totaux et le mettre dans une zone de texte, non?

  8. #8
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    Bonjour,
    C'est exactement ça . Ci-dessous la requete SQL:
    SELECT TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt, Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL
    FROM TBL_A_COMPTE INNER JOIN (TBL_DE_COMPTE INNER JOIN TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE) ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE
    GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    HAVING (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM DE CPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER PRENOM DE CPT]) AND ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt) In ('Retour','Envoi'))) OR (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM A CPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[PRENOM A CPTE]));

  9. #9
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    Bonjour,
    C'est exactement ça . Ci-dessous la requete SQL:
    SELECT TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt, Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL
    FROM TBL_A_COMPTE INNER JOIN (TBL_DE_COMPTE INNER JOIN TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE) ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE
    GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt, TBL_DE_COMPTE.Nom_PDV_D_CPTE, TBL_DE_COMPTE.Prenom_PDV_D_CPTE, TBL_A_COMPTE.Nom_PDV, TBL_A_COMPTE.Prenom_PDV, TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    HAVING (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM DE CPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER PRENOM DE CPT]) AND ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt) In ('Retour','Envoi'))) OR (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM A CPTE]) AND ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[PRENOM A CPTE]));

  10. #10
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    Bonjour,
    Quelqu'un a une réponse par rapport à ma question ci-dessus.
    Cordialement,

  11. #11
    orange's Avatar
    orange is offline Moderator
    Windows XP Access 2003
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,850
    For anyone following this thread, here is the SQL in a different format
    Code:
    SELECT TBL_MVT_CPT_A_MVT_CPT.Date_Mvt
    , TBL_DE_COMPTE.Nom_PDV_D_CPTE
    , TBL_DE_COMPTE.Prenom_PDV_D_CPTE
    , TBL_A_COMPTE.Nom_PDV
    , TBL_A_COMPTE.Prenom_PDV
    , TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    , Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL
    FROM TBL_A_COMPTE
     INNER JOIN (TBL_DE_COMPTE INNER JOIN
     TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE)
     ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE
    GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt
    , TBL_DE_COMPTE.Nom_PDV_D_CPTE
    , TBL_DE_COMPTE.Prenom_PDV_D_CPTE
    , TBL_A_COMPTE.Nom_PDV
    , TBL_A_COMPTE.Prenom_PDV
    , TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    HAVING 
    (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND
     ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM DE CPTE]) AND 
     ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER PRENOM DE CPT]) AND
     ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt) In ('Retour','Envoi'))) OR 
     (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM A CPTE]) AND
     ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[PRENOM A CPTE]));
    The difference in the 2 summary records is the "envoi" and "retour".
    Perhaps you could do 1 calculation for "envoi" and another for "retour".
    Then subtract one from the other.

    La différence entre les deux comptes rendus analytiques est le "envoi" et "retour".
    Peut-être que vous pourriez faire une calcul pour "envoi" et l'autre pour "retour".
    Puis soustraire l'un de l'autre.

    UNTESTED NON TESTÉ
    TotalRetour

    Code:
    SELECT TBL_MVT_CPT_A_MVT_CPT.Date_Mvt
    , TBL_DE_COMPTE.Nom_PDV_D_CPTE
    , TBL_DE_COMPTE.Prenom_PDV_D_CPTE
    , TBL_A_COMPTE.Nom_PDV
    , TBL_A_COMPTE.Prenom_PDV
    , TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    , Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL_Retour
    FROM TBL_A_COMPTE
     INNER JOIN (TBL_DE_COMPTE INNER JOIN
     TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE)
     ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE
    GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt
    , TBL_DE_COMPTE.Nom_PDV_D_CPTE
    , TBL_DE_COMPTE.Prenom_PDV_D_CPTE
    , TBL_A_COMPTE.Nom_PDV
    , TBL_A_COMPTE.Prenom_PDV
    , TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    HAVING 
    (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND
     ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM DE CPTE]) AND 
     ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER PRENOM DE CPT]) AND
     ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt) = 'Retour')) OR 
     (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM A CPTE]) AND
     ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[PRENOM A CPTE]));
    Total_Envoi
    Code:
    SELECT TBL_MVT_CPT_A_MVT_CPT.Date_Mvt
    , TBL_DE_COMPTE.Nom_PDV_D_CPTE
    , TBL_DE_COMPTE.Prenom_PDV_D_CPTE
    , TBL_A_COMPTE.Nom_PDV
    , TBL_A_COMPTE.Prenom_PDV
    , TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    , Sum(TBL_MVT_CPT_A_MVT_CPT.Montant_Mvt) AS TOTAL_Envoi
    FROM TBL_A_COMPTE
     INNER JOIN (TBL_DE_COMPTE INNER JOIN
     TBL_MVT_CPT_A_MVT_CPT ON TBL_DE_COMPTE.Num_Tel_D_CPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_D_CPTE)
     ON TBL_A_COMPTE.Num_Tel_A_COMPTE = TBL_MVT_CPT_A_MVT_CPT.Num_Tel_A_COMPTE
    GROUP BY TBL_MVT_CPT_A_MVT_CPT.Date_Mvt
    , TBL_DE_COMPTE.Nom_PDV_D_CPTE
    , TBL_DE_COMPTE.Prenom_PDV_D_CPTE
    , TBL_A_COMPTE.Nom_PDV
    , TBL_A_COMPTE.Prenom_PDV
    , TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt
    HAVING 
    (((TBL_MVT_CPT_A_MVT_CPT.Date_Mvt)=[DONNER LA DATE MVT]) AND
     ((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM DE CPTE]) AND 
     ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[DONNER PRENOM DE CPT]) AND
     ((TBL_MVT_CPT_A_MVT_CPT.Sens_Mvt) = 'Envoi')) OR 
     (((TBL_DE_COMPTE.Nom_PDV_D_CPTE)=[DONNER NOM A CPTE]) AND
     ((TBL_DE_COMPTE.Prenom_PDV_D_CPTE)=[PRENOM A CPTE]));

  12. #12
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    Bonjour,
    Apres avoir fait les requêtes séparément comment faire maintenant la soustraction pour qu'on puisse avoir le résultat dans un autre champ.
    Cordialement,

  13. #13
    orange's Avatar
    orange is offline Moderator
    Windows XP Access 2003
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,850
    Avez-vous essayé les deux chaînes SQL, et avez-vous les totaux vous avez besoin pour la soustraction? Si oui, vous pourriez essayer

    Peut-être, Sélectionner les champs que vous voulez et TotalEnvoi -TotalRetour que FinalTotal partir
    sélectionner ... Envoi
    UNION
    Sélectionnez retour

    Je ne suis pas sûr à ce sujet. Peut-être quelqu'un qui travaille principalement avec SQL pourrait répondre.

  14. #14
    kotor70 is offline Novice
    Windows XP Access 2007
    Join Date
    Mar 2015
    Location
    Mali
    Posts
    26
    Bonjour,
    Est il possible de lancer separement les deux requetes à partir de code VB(exécution requete selection à partir de VB) et récupérer dans deux variables et ensuite faire la différence des deux variables.
    Cordialement,

  15. #15
    orange's Avatar
    orange is offline Moderator
    Windows XP Access 2003
    Join Date
    Sep 2009
    Location
    Ottawa, Ontario, Canada; West Palm Beach FL
    Posts
    16,850
    Il est possible. Vous pouvez l'essayer et voir ce qui se passe.
    Il vaut la peine de faire un peu de l'expérimentation.

    Vous pouvez poster une copie de votre base de données. D'autres lecteurs peuvent avoir des commentaires / suggestions.

Page 1 of 2 12 LastLast
Please reply to this thread with any new information or opinions.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Other Forums: Microsoft Office Forums